|
23785
|
test(storyboard): freeze verified frame dialog rel test(storyboard): freeze verified frame dialog release scope...
|
57
|
5
|
governance.yml
|
155
|
5
|
0
|
refs/heads/main
|
ed9b5df870bf72edcc8be883dec811b649aa13db
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"588c69a848df6f7ee9e42b0f099f2eb02b4d9a74","after":"ed9b5df870bf72edcc8be883dec811b649aa13db","compare_url":"https://gitea.g-hi.com/luoanwu/image-generation/compare/588c69a848df6f7ee9e42b0f099f2eb02b4d9a74...ed9b5df870bf72edcc8be883dec811b649aa13db","commits":[{"id":"ed9b5df870bf72edcc8be883dec811b649aa13db","message":"test(storyboard): freeze verified frame dialog release scope\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/ed9b5df870bf72edcc8be883dec811b649aa13db","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-09T04:17:35-07:00","added":[],"removed":[],"modified":["docs/governance/log/2026-09-09-storyboard-frame-dialog.md","reports/contract-consumers.latest.json","reports/governance-docs.latest.json","reports/governance.latest.json","reports/material-review-concurrency-guard.latest.json","reports/migrations.latest.json","reports/module-boundary.latest.json","reports/naming.latest.json","reports/order-concurrency-guard.latest.json","reports/production-security.latest.json","reports/public-file-integration.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/storyboard-director-guard.latest.json","reports/storyboard-frame-dialog-20260909/README.md","reports/storyboard-frame-dialog-20260909/summary.json","reports/toolchain.latest.json","reports/validation-source.latest.json"]},{"id":"12eee55db00f40d5c4fb930a449700862494e72a","message":"Merge branch 'main' into fix/storyboard-draft-model\n\n# Conflicts:\n#\tCLAUDE.md\n#\treports/contract-consumers.latest.json\n#\treports/dependency-audit.latest.json\n#\treports/governance-docs.latest.json\n#\treports/governance.latest.json\n#\treports/inference-acceptance.latest.json\n#\treports/material-review-concurrency-guard.latest.json\n#\treports/migrations.latest.json\n#\treports/module-boundary.latest.json\n#\treports/naming.latest.json\n#\treports/order-concurrency-guard.latest.json\n#\treports/production-acceptance.latest.json\n#\treports/production-security.latest.json\n#\treports/public-file-acceptance.latest.json\n#\treports/public-file-integration.latest.json\n#\treports/runtime-acceptance.latest.json\n#\treports/runtime-governance.latest.json\n#\treports/schema-sync.latest.json\n#\treports/script-acceptance.latest.json\n#\treports/sidecar-tests.latest.json\n#\treports/storyboard-director-guard.latest.json\n#\treports/toolchain.latest.json\n#\treports/ui-acceptance.latest.json\n#\treports/validation-source.latest.json\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/12eee55db00f40d5c4fb930a449700862494e72a","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-09T04:13:25-07:00","added":["reports/director-review-20260909/summary.json","reports/template-making-uiux-20260909/summary.json"],"removed":[],"modified":["docs/governance/log/2026-09-09-director-review.md","docs/governance/log/2026-09-09-template-making-uiux.md","reports/director-review-20260909/README.md","reports/template-making-uiux-20260909/README.md"]},{"id":"4350b3cecf43560fc8329e34a7386e4f0725da9f","message":"test(storyboard): verify frame dialogs through real save workflows\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/4350b3cecf43560fc8329e34a7386e4f0725da9f","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-09T04:11:01-07:00","added":["docs/governance/log/2026-09-09-storyboard-frame-dialog.md","reports/storyboard-frame-dialog-20260909/README.md","reports/storyboard-frame-dialog-20260909/desktop.first.png","reports/storyboard-frame-dialog-20260909/desktop.last.png","reports/storyboard-frame-dialog-20260909/mobile.first.png","reports/storyboard-frame-dialog-20260909/mobile.last.png","reports/storyboard-frame-dialog-20260909/mobile.saved.png","reports/storyboard-frame-dialog-20260909/summary.json"],"removed":[],"modified":["CLAUDE.md","reports/contract-consumers.latest.json","reports/dependency-audit.latest.json","reports/governance-docs.latest.json","reports/governance.latest.json","reports/inference-acceptance.latest.json","reports/material-review-concurrency-guard.latest.json","reports/migrations.latest.json","reports/module-boundary.latest.json","reports/naming.latest.json","reports/order-concurrency-guard.latest.json","reports/production-acceptance.latest.json","reports/production-security.latest.json","reports/public-file-acceptance.latest.json","reports/public-file-integration.latest.json","reports/runtime-acceptance.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/script-acceptance.latest.json","reports/sidecar-tests.latest.json","reports/storyboard-director-guard.latest.json","reports/toolchain.latest.json","reports/ui-acceptance.latest.json","reports/validation-source.latest.json"]},{"id":"f8483010baee1e8dafb866c4cb554133ca515ad2","message":"Merge commit '7f9a6766' into fix/storyboard-draft-model\n\n# Conflicts:\n#\tCLAUDE.md\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/f8483010baee1e8dafb866c4cb554133ca515ad2","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-09T04:03:10-07:00","added":["apps/web/src/components/material-factory/TemplateMakingCanvas.tsx","docs/governance/log/2026-09-09-template-making-uiux.md","reports/template-making-uiux-20260909/README.md","scripts/lib/template-making-ui-acceptance.mjs"],"removed":[],"modified":["CLAUDE.md","apps/web/src/components/material-factory/EditStudio.tsx","apps/web/src/components/material-factory/NewTemplateButton.tsx","scripts/check-ui-acceptance.mjs","scripts/lib/storyboard-asset-dialog-ui-acceptance.mjs"]},{"id":"7c71e290d79de068685c7848ad40423059ef9cb3","message":"Merge branch 'main' into fix/storyboard-draft-model\n\n# Conflicts:\n#\tCLAUDE.md\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/7c71e290d79de068685c7848ad40423059ef9cb3","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-09T04:02:47-07:00","added":["docs/governance/log/2026-09-09-director-review.md","docs/releases/2026-09-09-template-preview1.md","reports/director-review-20260909/README.md","reports/template-preview-20260909/live-browser.json"],"removed":[],"modified":["CLAUDE.md","apps/web/src/components/material-factory/DirectorReviewWorkbench.tsx","apps/web/src/components/material-factory/StoryboardStudio.tsx","docs/governance/log/2026-09-09-template-preview.md","docs/releases/current.md","reports/template-preview-20260909/README.md","scripts/check-ui-acceptance.mjs"]}],"total_commits":0,"head_commit":{"id":"ed9b5df870bf72edcc8be883dec811b649aa13db","message":"test(storyboard): freeze verified frame dialog release scope\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/ed9b5df870bf72edcc8be883dec811b649aa13db","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-09T04:17:35-07:00","added":[],"removed":[],"modified":["docs/governance/log/2026-09-09-storyboard-frame-dialog.md","reports/contract-consumers.latest.json","reports/governance-docs.latest.json","reports/governance.latest.json","reports/material-review-concurrency-guard.latest.json","reports/migrations.latest.json","reports/module-boundary.latest.json","reports/naming.latest.json","reports/order-concurrency-guard.latest.json","reports/production-security.latest.json","reports/public-file-integration.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/storyboard-director-guard.latest.json","reports/storyboard-frame-dialog-20260909/README.md","reports/storyboard-frame-dialog-20260909/summary.json","reports/toolchain.latest.json","reports/validation-source.latest.json"]},"repository":{"id":57,"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":"image-generation","full_name":"luoanwu/image-generation","description":"","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":773297,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/image-generation/languages","html_url":"https://gitea.g-hi.com/luoanwu/image-generation","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/image-generation","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/image-generation.git","clone_url":"https://gitea.g-hi.com/luoanwu/image-generation.git","original_url":"","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":8,"open_issues_count":0,"open_pr_counter":1,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-07-06T17:04:22+08:00","updated_at":"2026-09-09T19:09:40+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
|
1788952660
|
1788952721
|
0
|
1788952660
|
1788952721
|
group: governance-${{ github.workflow }}-${{ githu group: governance-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: "true"
...
|
governance-governance.yml-refs/heads/main
|
1
|
Edit
Delete
|
|
23786
|
docs: record verified first and last frame dialog docs: record verified first and last frame dialog rollout...
|
57
|
5
|
governance.yml
|
156
|
5
|
0
|
refs/heads/main
|
ab568e701b98d0e678ee9af7b1c56ccf1937e576
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"ed9b5df870bf72edcc8be883dec811b649aa13db","after":"ab568e701b98d0e678ee9af7b1c56ccf1937e576","compare_url":"https://gitea.g-hi.com/luoanwu/image-generation/compare/ed9b5df870bf72edcc8be883dec811b649aa13db...ab568e701b98d0e678ee9af7b1c56ccf1937e576","commits":[{"id":"ab568e701b98d0e678ee9af7b1c56ccf1937e576","message":"docs: record verified first and last frame dialog rollout\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/ab568e701b98d0e678ee9af7b1c56ccf1937e576","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-09T04:25:11-07:00","added":["docs/releases/2026-09-09-storyboard-frames1.md","reports/storyboard-frame-dialog-20260909/live-verification.json"],"removed":[],"modified":["docs/governance/log/2026-09-09-storyboard-frame-dialog.md","docs/releases/current.md","reports/governance-docs.latest.json","reports/storyboard-frame-dialog-20260909/README.md","reports/storyboard-frame-dialog-20260909/summary.json"]}],"total_commits":0,"head_commit":{"id":"ab568e701b98d0e678ee9af7b1c56ccf1937e576","message":"docs: record verified first and last frame dialog rollout\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/ab568e701b98d0e678ee9af7b1c56ccf1937e576","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-09T04:25:11-07:00","added":["docs/releases/2026-09-09-storyboard-frames1.md","reports/storyboard-frame-dialog-20260909/live-verification.json"],"removed":[],"modified":["docs/governance/log/2026-09-09-storyboard-frame-dialog.md","docs/releases/current.md","reports/governance-docs.latest.json","reports/storyboard-frame-dialog-20260909/README.md","reports/storyboard-frame-dialog-20260909/summary.json"]},"repository":{"id":57,"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":"image-generation","full_name":"luoanwu/image-generation","description":"","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":774044,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/image-generation/languages","html_url":"https://gitea.g-hi.com/luoanwu/image-generation","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/image-generation","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/image-generation.git","clone_url":"https://gitea.g-hi.com/luoanwu/image-generation.git","original_url":"","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":8,"open_issues_count":0,"open_pr_counter":1,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-07-06T17:04:22+08:00","updated_at":"2026-09-09T19:17:40+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
|
1788953118
|
1788953158
|
0
|
1788953117
|
1788953158
|
group: governance-${{ github.workflow }}-${{ githu group: governance-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: "true"
...
|
governance-governance.yml-refs/heads/main
|
1
|
Edit
Delete
|
|
23787
|
test(template): verify combined release and settle test(template): verify combined release and settled director locking...
|
57
|
5
|
governance.yml
|
157
|
5
|
0
|
refs/heads/main
|
5be805bc68721833734282a6940007a275583165
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"ab568e701b98d0e678ee9af7b1c56ccf1937e576","after":"5be805bc68721833734282a6940007a275583165","compare_url":"https://gitea.g-hi.com/luoanwu/image-generation/compare/ab568e701b98d0e678ee9af7b1c56ccf1937e576...5be805bc68721833734282a6940007a275583165","commits":[{"id":"5be805bc68721833734282a6940007a275583165","message":"test(template): verify combined release and settled director locking\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/5be805bc68721833734282a6940007a275583165","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-09T04:36:33-07:00","added":[],"removed":[],"modified":["CLAUDE.md","docs/governance/log/2026-09-09-template-making-uiux.md","reports/contract-consumers.latest.json","reports/dependency-audit.latest.json","reports/governance-docs.latest.json","reports/governance.latest.json","reports/inference-acceptance.latest.json","reports/material-review-concurrency-guard.latest.json","reports/migrations.latest.json","reports/module-boundary.latest.json","reports/naming.latest.json","reports/order-concurrency-guard.latest.json","reports/production-acceptance.latest.json","reports/production-security.latest.json","reports/public-file-acceptance.latest.json","reports/public-file-integration.latest.json","reports/runtime-acceptance.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/script-acceptance.latest.json","reports/sidecar-tests.latest.json","reports/storyboard-director-guard.latest.json","reports/template-making-uiux-20260909/README.md","reports/template-making-uiux-20260909/summary.json","reports/toolchain.latest.json","reports/ui-acceptance.latest.json","reports/validation-source.latest.json","scripts/check-ui-acceptance.mjs"]},{"id":"3568643a79588fcc4a9f76c1aabc201291379048","message":"docs: retain verified frame rollout records\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/3568643a79588fcc4a9f76c1aabc201291379048","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-09T04:26:07-07:00","added":["docs/releases/2026-09-09-storyboard-frames1.md","reports/storyboard-frame-dialog-20260909/live-verification.json"],"removed":[],"modified":["docs/governance/log/2026-09-09-storyboard-frame-dialog.md","docs/releases/current.md","reports/governance-docs.latest.json","reports/storyboard-frame-dialog-20260909/README.md","reports/storyboard-frame-dialog-20260909/summary.json"]},{"id":"6c0025e13c2f8abdef7332129ae9407570093694","message":"merge: preserve published frame dialogs before template release\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/6c0025e13c2f8abdef7332129ae9407570093694","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-09T04:24:27-07:00","added":["docs/governance/log/2026-09-09-storyboard-frame-dialog.md","reports/director-review-20260909/summary.json","reports/storyboard-frame-dialog-20260909/README.md","reports/storyboard-frame-dialog-20260909/desktop.first.png","reports/storyboard-frame-dialog-20260909/desktop.last.png","reports/storyboard-frame-dialog-20260909/mobile.first.png","reports/storyboard-frame-dialog-20260909/mobile.last.png","reports/storyboard-frame-dialog-20260909/mobile.saved.png","reports/storyboard-frame-dialog-20260909/summary.json","scripts/lib/storyboard-frame-dialog-ui-acceptance.mjs"],"removed":[],"modified":["CLAUDE.md","apps/web/src/components/material-factory/StoryboardFrameGeneration.tsx","apps/web/src/components/material-factory/StoryboardStudio.tsx","docs/governance/log/2026-09-09-director-review.md","reports/contract-consumers.latest.json","reports/director-review-20260909/README.md","reports/governance-docs.latest.json","reports/governance.latest.json","reports/material-review-concurrency-guard.latest.json","reports/migrations.latest.json","reports/module-boundary.latest.json","reports/naming.latest.json","reports/order-concurrency-guard.latest.json","reports/production-security.latest.json","reports/public-file-integration.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/storyboard-director-guard.latest.json","reports/toolchain.latest.json","reports/validation-source.latest.json","scripts/check-ui-acceptance.mjs"]},{"id":"1f75c207f4de0e7dfe94b0184b74d3e9d1f0fba2","message":"fix(template): keep focused fields visible in compact editor layouts\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/1f75c207f4de0e7dfe94b0184b74d3e9d1f0fba2","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-09T04:24:13-07:00","added":["docs/releases/2026-09-09-template-making-uiux1.md"],"removed":[],"modified":["apps/web/src/components/material-factory/EditStudio.tsx","docs/governance/log/2026-09-09-template-making-uiux.md","reports/dependency-audit.latest.json","reports/inference-acceptance.latest.json","reports/production-acceptance.latest.json","reports/public-file-acceptance.latest.json","reports/runtime-acceptance.latest.json","reports/script-acceptance.latest.json","reports/sidecar-tests.latest.json","reports/template-making-uiux-20260909/summary.json","reports/ui-acceptance.latest.json","scripts/lib/template-making-ui-acceptance.mjs"]}],"total_commits":0,"head_commit":{"id":"5be805bc68721833734282a6940007a275583165","message":"test(template): verify combined release and settled director locking\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/5be805bc68721833734282a6940007a275583165","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-09T04:36:33-07:00","added":[],"removed":[],"modified":["CLAUDE.md","docs/governance/log/2026-09-09-template-making-uiux.md","reports/contract-consumers.latest.json","reports/dependency-audit.latest.json","reports/governance-docs.latest.json","reports/governance.latest.json","reports/inference-acceptance.latest.json","reports/material-review-concurrency-guard.latest.json","reports/migrations.latest.json","reports/module-boundary.latest.json","reports/naming.latest.json","reports/order-concurrency-guard.latest.json","reports/production-acceptance.latest.json","reports/production-security.latest.json","reports/public-file-acceptance.latest.json","reports/public-file-integration.latest.json","reports/runtime-acceptance.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/script-acceptance.latest.json","reports/sidecar-tests.latest.json","reports/storyboard-director-guard.latest.json","reports/template-making-uiux-20260909/README.md","reports/template-making-uiux-20260909/summary.json","reports/toolchain.latest.json","reports/ui-acceptance.latest.json","reports/validation-source.latest.json","scripts/check-ui-acceptance.mjs"]},"repository":{"id":57,"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":"image-generation","full_name":"luoanwu/image-generation","description":"","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":774066,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/image-generation/languages","html_url":"https://gitea.g-hi.com/luoanwu/image-generation","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/image-generation","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/image-generation.git","clone_url":"https://gitea.g-hi.com/luoanwu/image-generation.git","original_url":"","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":8,"open_issues_count":0,"open_pr_counter":1,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-07-06T17:04:22+08:00","updated_at":"2026-09-09T19:25: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
|
4
|
1788953800
|
1788953840
|
0
|
1788953798
|
1788953840
|
group: governance-${{ github.workflow }}-${{ githu group: governance-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: "true"
...
|
governance-governance.yml-refs/heads/main
|
1
|
Edit
Delete
|
|
23788
|
docs: record verified template making rollout and docs: record verified template making rollout and compact layout checks...
|
57
|
5
|
governance.yml
|
158
|
5
|
0
|
refs/heads/main
|
cd58dfcef9e9b68a1c93d3d3fab5a6663e133cbd
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"5be805bc68721833734282a6940007a275583165","after":"cd58dfcef9e9b68a1c93d3d3fab5a6663e133cbd","compare_url":"https://gitea.g-hi.com/luoanwu/image-generation/compare/5be805bc68721833734282a6940007a275583165...cd58dfcef9e9b68a1c93d3d3fab5a6663e133cbd","commits":[{"id":"cd58dfcef9e9b68a1c93d3d3fab5a6663e133cbd","message":"docs: record verified template making rollout and compact layout checks\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/cd58dfcef9e9b68a1c93d3d3fab5a6663e133cbd","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-09T04:41:01-07:00","added":["docs/releases/2026-09-09-template-making-uiux2.md"],"removed":[],"modified":["CLAUDE.md","docs/governance/log/2026-09-09-template-making-uiux.md","docs/releases/current.md","reports/governance-docs.latest.json","reports/template-making-uiux-20260909/README.md"]}],"total_commits":0,"head_commit":{"id":"cd58dfcef9e9b68a1c93d3d3fab5a6663e133cbd","message":"docs: record verified template making rollout and compact layout checks\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/cd58dfcef9e9b68a1c93d3d3fab5a6663e133cbd","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-09T04:41:01-07:00","added":["docs/releases/2026-09-09-template-making-uiux2.md"],"removed":[],"modified":["CLAUDE.md","docs/governance/log/2026-09-09-template-making-uiux.md","docs/releases/current.md","reports/governance-docs.latest.json","reports/template-making-uiux-20260909/README.md"]},"repository":{"id":57,"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":"image-generation","full_name":"luoanwu/image-generation","description":"","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":774277,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/image-generation/languages","html_url":"https://gitea.g-hi.com/luoanwu/image-generation","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/image-generation","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/image-generation.git","clone_url":"https://gitea.g-hi.com/luoanwu/image-generation.git","original_url":"","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":8,"open_issues_count":0,"open_pr_counter":1,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-07-06T17:04:22+08:00","updated_at":"2026-09-09T19:36: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
|
1788954066
|
1788954106
|
0
|
1788954066
|
1788954106
|
group: governance-${{ github.workflow }}-${{ githu group: governance-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: "true"
...
|
governance-governance.yml-refs/heads/main
|
1
|
Edit
Delete
|
|
23789
|
docs: record complete pending-worktree reconciliat docs: record complete pending-worktree reconciliation...
|
57
|
5
|
governance.yml
|
159
|
5
|
0
|
refs/heads/main
|
30fdd1609a7af216bfda2d4363ca21820d7114f4
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"cd58dfcef9e9b68a1c93d3d3fab5a6663e133cbd","after":"30fdd1609a7af216bfda2d4363ca21820d7114f4","compare_url":"https://gitea.g-hi.com/luoanwu/image-generation/compare/cd58dfcef9e9b68a1c93d3d3fab5a6663e133cbd...30fdd1609a7af216bfda2d4363ca21820d7114f4","commits":[{"id":"30fdd1609a7af216bfda2d4363ca21820d7114f4","message":"docs: record complete pending-worktree reconciliation\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/30fdd1609a7af216bfda2d4363ca21820d7114f4","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-09T05:19:04-07:00","added":["reports/worktree-archive-20260909/README.md","reports/worktree-archive-20260909/release-lfs-equivalence.json"],"removed":[],"modified":[]},{"id":"7a81df71a7ead4c010becb7f39b97fe10177f7b3","message":"docs: preserve outstanding r25 release acceptance evidence\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/7a81df71a7ead4c010becb7f39b97fe10177f7b3","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-09T05:18:41-07:00","added":["reports/worktree-archive-20260909/release-20260907-r25/manifest.json","reports/worktree-archive-20260909/release-20260907-r25/original-diff.json","reports/worktree-archive-20260909/release-20260907-r25/reports/admin-desktop.png","reports/worktree-archive-20260909/release-20260907-r25/reports/admin-mobile.png","reports/worktree-archive-20260909/release-20260907-r25/reports/content-detail.brief-desktop.png","reports/worktree-archive-20260909/release-20260907-r25/reports/content-detail.images-desktop.png","reports/worktree-archive-20260909/release-20260907-r25/reports/content-detail.output-desktop.png","reports/worktree-archive-20260909/release-20260907-r25/reports/content-detail.output-mobile.png","reports/worktree-archive-20260909/release-20260907-r25/reports/content-detail.plans-desktop.png","reports/worktree-archive-20260909/release-20260907-r25/reports/content-detail.review-desktop.png","reports/worktree-archive-20260909/release-20260907-r25/reports/contract-consumers.latest.json","reports/worktree-archive-20260909/release-20260907-r25/reports/dependency-audit.latest.json","reports/worktree-archive-20260909/release-20260907-r25/reports/governance-docs.latest.json","reports/worktree-archive-20260909/release-20260907-r25/reports/governance.latest.json","reports/worktree-archive-20260909/release-20260907-r25/reports/inference-acceptance.latest.json","reports/worktree-archive-20260909/release-20260907-r25/reports/material-review-concurrency-guard.latest.json","reports/worktree-archive-20260909/release-20260907-r25/reports/migrations.latest.json","reports/worktree-archive-20260909/release-20260907-r25/reports/model-api-key-saved.png","reports/worktree-archive-20260909/release-20260907-r25/reports/model-credential-error.desktop.png","reports/worktree-archive-20260909/release-20260907-r25/reports/model-credential-error.mobile.png","reports/worktree-archive-20260909/release-20260907-r25/reports/module-boundary.latest.json","reports/worktree-archive-20260909/release-20260907-r25/reports/naming.latest.json","reports/worktree-archive-20260909/release-20260907-r25/reports/order-concurrency-guard.latest.json","reports/worktree-archive-20260909/release-20260907-r25/reports/prd-retry.mobile.png","reports/worktree-archive-20260909/release-20260907-r25/reports/prd-review.desktop.png","reports/worktree-archive-20260909/release-20260907-r25/reports/production-acceptance.latest.json","reports/worktree-archive-20260909/release-20260907-r25/reports/production-security.latest.json","reports/worktree-archive-20260909/release-20260907-r25/reports/public-file-acceptance.latest.json","reports/worktree-archive-20260909/release-20260907-r25/reports/public-file-integration.latest.json","reports/worktree-archive-20260909/release-20260907-r25/reports/runtime-acceptance.latest.json","reports/worktree-archive-20260909/release-20260907-r25/reports/runtime-governance.latest.json","reports/worktree-archive-20260909/release-20260907-r25/reports/schema-sync.latest.json","reports/worktree-archive-20260909/release-20260907-r25/reports/script-acceptance.latest.json","reports/worktree-archive-20260909/release-20260907-r25/reports/script-generation-queue.png","reports/worktree-archive-20260909/release-20260907-r25/reports/storyboard-director-guard.latest.json","reports/worktree-archive-20260909/release-20260907-r25/reports/toolchain.latest.json","reports/worktree-archive-20260909/release-20260907-r25/reports/ui-acceptance.desktop.png","reports/worktree-archive-20260909/release-20260907-r25/reports/ui-acceptance.draft-import.png","reports/worktree-archive-20260909/release-20260907-r25/reports/ui-acceptance.latest.json","reports/worktree-archive-20260909/release-20260907-r25/reports/ui-acceptance.production.png","reports/worktree-archive-20260909/release-20260907-r25/reports/ux-edit.desktop.png","reports/worktree-archive-20260909/release-20260907-r25/reports/ux-home.desktop.png","reports/worktree-archive-20260909/release-20260907-r25/reports/ux-intake.desktop.png","reports/worktree-archive-20260909/release-20260907-r25/reports/validation-source.latest.json"],"removed":[],"modified":[]},{"id":"6d9d4c576989fde7d1f79acd9ba8a5350269178a","message":"docs: preserve image UI evidence and reconciled type config snapshot\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/6d9d4c576989fde7d1f79acd9ba8a5350269178a","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-09T05:18:10-07:00","added":["reports/worktree-archive-20260909/image-generation-image-uiux/manifest.json","reports/worktree-archive-20260909/image-generation-image-uiux/original-diff.json","reports/worktree-archive-20260909/image-generation-image-uiux/reports/admin-brands.desktop.png","reports/worktree-archive-20260909/image-generation-image-uiux/reports/admin-brands.mobile.png","reports/worktree-archive-20260909/image-generation-image-uiux/reports/image-creation-1135.png","reports/worktree-archive-20260909/image-generation-image-uiux/reports/image-creation-1440.png","reports/worktree-archive-20260909/image-generation-image-uiux/reports/image-creation-390.png","reports/worktree-archive-20260909/image-generation-image-uiux/reports/image-creation-768.png","reports/worktree-archive-20260909/uiux-detail-pages/apps/web/tsconfig.json","reports/worktree-archive-20260909/uiux-detail-pages/manifest.json","reports/worktree-archive-20260909/uiux-detail-pages/original-diff.json"],"removed":[],"modified":[]},{"id":"d651c07c5743dbd68a83a1ea51052a262365e870","message":"docs: preserve pending subtitle burn validation records\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/d651c07c5743dbd68a83a1ea51052a262365e870","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-09T05:18:10-07:00","added":["reports/worktree-archive-20260909/image-generation-subtitle-burn/manifest.json","reports/worktree-archive-20260909/image-generation-subtitle-burn/models/material-factory/README.md","reports/worktree-archive-20260909/image-generation-subtitle-burn/models/material-factory/z-image-turbo/README.md","reports/worktree-archive-20260909/image-generation-subtitle-burn/original-diff.json","reports/worktree-archive-20260909/image-generation-subtitle-burn/reports/admin-desktop.png","reports/worktree-archive-20260909/image-generation-subtitle-burn/reports/admin-mobile.png","reports/worktree-archive-20260909/image-generation-subtitle-burn/reports/content-detail.output-mobile.png","reports/worktree-archive-20260909/image-generation-subtitle-burn/reports/content-detail.review-desktop.png","reports/worktree-archive-20260909/image-generation-subtitle-burn/reports/contract-consumers.latest.json","reports/worktree-archive-20260909/image-generation-subtitle-burn/reports/creative-quality.desktop.png","reports/worktree-archive-20260909/image-generation-subtitle-burn/reports/dependency-audit.latest.json","reports/worktree-archive-20260909/image-generation-subtitle-burn/reports/governance-docs.latest.json","reports/worktree-archive-20260909/image-generation-subtitle-burn/reports/governance.latest.json","reports/worktree-archive-20260909/image-generation-subtitle-burn/reports/inference-acceptance.latest.json","reports/worktree-archive-20260909/image-generation-subtitle-burn/reports/material-review-concurrency-guard.latest.json","reports/worktree-archive-20260909/image-generation-subtitle-burn/reports/migrations.latest.json","reports/worktree-archive-20260909/image-generation-subtitle-burn/reports/model-api-key-saved.png","reports/worktree-archive-20260909/image-generation-subtitle-burn/reports/model-credential-error.desktop.png","reports/worktree-archive-20260909/image-generation-subtitle-burn/reports/model-credential-error.mobile.png","reports/worktree-archive-20260909/image-generation-subtitle-burn/reports/module-boundary.latest.json","reports/worktree-archive-20260909/image-generation-subtitle-burn/reports/naming.latest.json","reports/worktree-archive-20260909/image-generation-subtitle-burn/reports/order-concurrency-guard.latest.json","reports/worktree-archive-20260909/image-generation-subtitle-burn/reports/prd-retry.mobile.png","reports/worktree-archive-20260909/image-generation-subtitle-burn/reports/prd-review.desktop.png","reports/worktree-archive-20260909/image-generation-subtitle-burn/reports/production-acceptance.latest.json","reports/worktree-archive-20260909/image-generation-subtitle-burn/reports/production-delivery-released.desktop.png","reports/worktree-archive-20260909/image-generation-subtitle-burn/reports/production-delivery-revoked.mobile.png","reports/worktree-archive-20260909/image-generation-subtitle-burn/reports/production-pagination.desktop.png","reports/worktree-archive-20260909/image-generation-subtitle-burn/reports/production-pagination.mobile.png","reports/worktree-archive-20260909/image-generation-subtitle-burn/reports/production-review-preview.desktop.png","reports/worktree-archive-20260909/image-generation-subtitle-burn/reports/production-security.latest.json","reports/worktree-archive-20260909/image-generation-subtitle-burn/reports/production-single-tenant-create.desktop.png","reports/worktree-archive-20260909/image-generation-subtitle-burn/reports/production-single-tenant-separation.desktop.png","reports/worktree-archive-20260909/image-generation-subtitle-burn/reports/public-file-acceptance.latest.json","reports/worktree-archive-20260909/image-generation-subtitle-burn/reports/public-file-integration.latest.json","reports/worktree-archive-20260909/image-generation-subtitle-burn/reports/runtime-acceptance.latest.json","reports/worktree-archive-20260909/image-generation-subtitle-burn/reports/runtime-governance.latest.json","reports/worktree-archive-20260909/image-generation-subtitle-burn/reports/schema-sync.latest.json","reports/worktree-archive-20260909/image-generation-subtitle-burn/reports/script-acceptance.latest.json","reports/worktree-archive-20260909/image-generation-subtitle-burn/reports/script-generation-queue.png","reports/worktree-archive-20260909/image-generation-subtitle-burn/reports/sidecar-tests.latest.json","reports/worktree-archive-20260909/image-generation-subtitle-burn/reports/storyboard-director-guard.latest.json","reports/worktree-archive-20260909/image-generation-subtitle-burn/reports/subtitle-burn-2026-09-08/README.md","reports/worktree-archive-20260909/image-generation-subtitle-burn/reports/subtitle-burn-2026-09-08/api.json","reports/worktree-archive-20260909/image-generation-subtitle-burn/reports/subtitle-burn-2026-09-08/output.png","reports/worktree-archive-20260909/image-generation-subtitle-burn/reports/subtitle-burn-2026-09-08/post-production.json","reports/worktree-archive-20260909/image-generation-subtitle-burn/reports/subtitle-burn-2026-09-08/subtitle-burn-mobile.png","reports/worktree-archive-20260909/image-generation-subtitle-burn/reports/subtitle-burn-2026-09-08/subtitle-burn.png","reports/worktree-archive-20260909/image-generation-subtitle-burn/reports/subtitle-burn-2026-09-08/subtitle-regression.json","reports/worktree-archive-20260909/image-generation-subtitle-burn/reports/subtitle-burn-2026-09-08/ui.json","reports/worktree-archive-20260909/image-generation-subtitle-burn/reports/subtitle-burn-2026-09-08/validation.json","reports/worktree-archive-20260909/image-generation-subtitle-burn/reports/template-types.desktop.png","reports/worktree-archive-20260909/image-generation-subtitle-burn/reports/template-types.mobile.png","reports/worktree-archive-20260909/image-generation-subtitle-burn/reports/toolchain.latest.json","reports/worktree-archive-20260909/image-generation-subtitle-burn/reports/ui-acceptance.desktop.png","reports/worktree-archive-20260909/image-generation-subtitle-burn/reports/ui-acceptance.draft-import.png","reports/worktree-archive-20260909/image-generation-subtitle-burn/reports/ui-acceptance.latest.json","reports/worktree-archive-20260909/image-generation-subtitle-burn/reports/ui-acceptance.production.png","reports/worktree-archive-20260909/image-generation-subtitle-burn/reports/ux-edit.desktop.png","reports/worktree-archive-20260909/image-generation-subtitle-burn/reports/ux-intake.desktop.png","reports/worktree-archive-20260909/image-generation-subtitle-burn/reports/validation-source.latest.json","reports/worktree-archive-20260909/image-generation-subtitle-burn/reports/video-batch-paused.mobile.png","reports/worktree-archive-20260909/image-generation-subtitle-burn/reports/video-regenerate-2026-09-08/desktop.png","reports/worktree-archive-20260909/image-generation-subtitle-burn/reports/video-regenerate-2026-09-08/mobile.png"],"removed":[],"modified":[]},{"id":"bd718aa062579703ef58af7e176eeedfe309f6e8","message":"docs: preserve pending brand rename acceptance evidence\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/bd718aa062579703ef58af7e176eeedfe309f6e8","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-09T05:18:00-07:00","added":["reports/worktree-archive-20260909/image-generation-brand-rename/manifest.json","reports/worktree-archive-20260909/image-generation-brand-rename/original-diff.json","reports/worktree-archive-20260909/image-generation-brand-rename/reports/admin-brands.desktop.png","reports/worktree-archive-20260909/image-generation-brand-rename/reports/admin-brands.mobile.png","reports/worktree-archive-20260909/image-generation-brand-rename/reports/admin-desktop.png","reports/worktree-archive-20260909/image-generation-brand-rename/reports/admin-mobile.png","reports/worktree-archive-20260909/image-generation-brand-rename/reports/content-detail.brief-desktop.png","reports/worktree-archive-20260909/image-generation-brand-rename/reports/content-detail.images-desktop.png","reports/worktree-archive-20260909/image-generation-brand-rename/reports/content-detail.output-desktop.png","reports/worktree-archive-20260909/image-generation-brand-rename/reports/content-detail.output-mobile.png","reports/worktree-archive-20260909/image-generation-brand-rename/reports/content-detail.plans-desktop.png","reports/worktree-archive-20260909/image-generation-brand-rename/reports/content-detail.review-desktop.png","reports/worktree-archive-20260909/image-generation-brand-rename/reports/contract-consumers.latest.json","reports/worktree-archive-20260909/image-generation-brand-rename/reports/creative-quality.desktop.png","reports/worktree-archive-20260909/image-generation-brand-rename/reports/dependency-audit.latest.json","reports/worktree-archive-20260909/image-generation-brand-rename/reports/governance-docs.latest.json","reports/worktree-archive-20260909/image-generation-brand-rename/reports/governance.latest.json","reports/worktree-archive-20260909/image-generation-brand-rename/reports/inference-acceptance.latest.json","reports/worktree-archive-20260909/image-generation-brand-rename/reports/material-review-concurrency-guard.latest.json","reports/worktree-archive-20260909/image-generation-brand-rename/reports/migrations.latest.json","reports/worktree-archive-20260909/image-generation-brand-rename/reports/model-api-key-saved.png","reports/worktree-archive-20260909/image-generation-brand-rename/reports/model-credential-error.desktop.png","reports/worktree-archive-20260909/image-generation-brand-rename/reports/model-credential-error.mobile.png","reports/worktree-archive-20260909/image-generation-brand-rename/reports/module-boundary.latest.json","reports/worktree-archive-20260909/image-generation-brand-rename/reports/naming.latest.json","reports/worktree-archive-20260909/image-generation-brand-rename/reports/order-concurrency-guard.latest.json","reports/worktree-archive-20260909/image-generation-brand-rename/reports/prd-retry.mobile.png","reports/worktree-archive-20260909/image-generation-brand-rename/reports/prd-review.desktop.png","reports/worktree-archive-20260909/image-generation-brand-rename/reports/production-acceptance.latest.json","reports/worktree-archive-20260909/image-generation-brand-rename/reports/production-delivery-released.desktop.png","reports/worktree-archive-20260909/image-generation-brand-rename/reports/production-delivery-revoked.mobile.png","reports/worktree-archive-20260909/image-generation-brand-rename/reports/production-pagination.desktop.png","reports/worktree-archive-20260909/image-generation-brand-rename/reports/production-pagination.mobile.png","reports/worktree-archive-20260909/image-generation-brand-rename/reports/production-review-preview.desktop.png","reports/worktree-archive-20260909/image-generation-brand-rename/reports/production-security.latest.json","reports/worktree-archive-20260909/image-generation-brand-rename/reports/production-single-tenant-create.desktop.png","reports/worktree-archive-20260909/image-generation-brand-rename/reports/production-single-tenant-separation.desktop.png","reports/worktree-archive-20260909/image-generation-brand-rename/reports/public-file-acceptance.latest.json","reports/worktree-archive-20260909/image-generation-brand-rename/reports/public-file-integration.latest.json","reports/worktree-archive-20260909/image-generation-brand-rename/reports/runtime-acceptance.latest.json","reports/worktree-archive-20260909/image-generation-brand-rename/reports/runtime-governance.latest.json","reports/worktree-archive-20260909/image-generation-brand-rename/reports/schema-sync.latest.json","reports/worktree-archive-20260909/image-generation-brand-rename/reports/script-acceptance.latest.json","reports/worktree-archive-20260909/image-generation-brand-rename/reports/script-generation-queue.png","reports/worktree-archive-20260909/image-generation-brand-rename/reports/sidecar-tests.latest.json","reports/worktree-archive-20260909/image-generation-brand-rename/reports/storyboard-director-guard.latest.json","reports/worktree-archive-20260909/image-generation-brand-rename/reports/template-types.desktop.png","reports/worktree-archive-20260909/image-generation-brand-rename/reports/template-types.mobile.png","reports/worktree-archive-20260909/image-generation-brand-rename/reports/toolchain.latest.json","reports/worktree-archive-20260909/image-generation-brand-rename/reports/ui-acceptance.desktop.png","reports/worktree-archive-20260909/image-generation-brand-rename/reports/ui-acceptance.draft-import.png","reports/worktree-archive-20260909/image-generation-brand-rename/reports/ui-acceptance.latest.json","reports/worktree-archive-20260909/image-generation-brand-rename/reports/ui-acceptance.mobile.png","reports/worktree-archive-20260909/image-generation-brand-rename/reports/ui-acceptance.production.png","reports/worktree-archive-20260909/image-generation-brand-rename/reports/ux-edit.desktop.png","reports/worktree-archive-20260909/image-generation-brand-rename/reports/ux-home.desktop.png","reports/worktree-archive-20260909/image-generation-brand-rename/reports/ux-home.mobile.png","reports/worktree-archive-20260909/image-generation-brand-rename/reports/ux-intake.desktop.png","reports/worktree-archive-20260909/image-generation-brand-rename/reports/validation-source.latest.json","reports/worktree-archive-20260909/image-generation-brand-rename/reports/video-batch-paused.mobile.png","reports/worktree-archive-20260909/image-generation-brand-rename/reports/video-regenerate-2026-09-08/desktop.png","reports/worktree-archive-20260909/image-generation-brand-rename/reports/video-regenerate-2026-09-08/mobile.png"],"removed":[],"modified":[]}],"total_commits":0,"head_commit":{"id":"30fdd1609a7af216bfda2d4363ca21820d7114f4","message":"docs: record complete pending-worktree reconciliation\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/30fdd1609a7af216bfda2d4363ca21820d7114f4","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-09T05:19:04-07:00","added":["reports/worktree-archive-20260909/README.md","reports/worktree-archive-20260909/release-lfs-equivalence.json"],"removed":[],"modified":[]},"repository":{"id":57,"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":"image-generation","full_name":"luoanwu/image-generation","description":"","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":774326,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/image-generation/languages","html_url":"https://gitea.g-hi.com/luoanwu/image-generation","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/image-generation","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/image-generation.git","clone_url":"https://gitea.g-hi.com/luoanwu/image-generation.git","original_url":"","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":8,"open_issues_count":0,"open_pr_counter":1,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-07-06T17:04:22+08:00","updated_at":"2026-09-09T19:41:06+08:00","archived_at":"1970-01-01T08:00:00+08:00","permissions":{"admin":true,"push":true,"pull":true},"has_code":true,"has_issues":true,"internal_tracker":{"enable_time_tracker":true,"allow_only_contributors_to_track_time":true,"enable_issue_dependencies":true},"has_wiki":true,"has_pull_requests":true,"has_projects":true,"projects_mode":"all","has_releases":true,"has_packages":true,"has_actions":true,"ignore_whitespace_conflicts":false,"allow_merge_commits":true,"allow_rebase":true,"allow_rebase_explicit":true,"allow_squash_merge":true,"allow_fast_forward_only_merge":true,"allow_rebase_update":true,"allow_manual_merge":false,"autodetect_manual_merge":false,"default_delete_branch_after_merge":false,"default_merge_style":"merge","default_allow_maintainer_edit":true,"avatar_url":"","internal":false,"mirror_interval":"","object_format_name":"sha1","mirror_updated":"0001-01-01T00:00:00Z","topics":[],"licenses":[]},"pusher":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"sender":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"}}...
|
push
|
2
|
4
|
1788956476
|
1788956566
|
0
|
1788956476
|
1788956566
|
group: governance-${{ github.workflow }}-${{ githu group: governance-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: "true"
...
|
governance-governance.yml-refs/heads/main
|
1
|
Edit
Delete
|
|
23790
|
fix(template): explain blocked saves and focus mis fix(template): explain blocked saves and focus missing name...
|
57
|
5
|
governance.yml
|
160
|
5
|
0
|
refs/heads/main
|
81310a3c02e577fe6aff78bf48018620c185ecc8
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"30fdd1609a7af216bfda2d4363ca21820d7114f4","after":"81310a3c02e577fe6aff78bf48018620c185ecc8","compare_url":"https://gitea.g-hi.com/luoanwu/image-generation/compare/30fdd1609a7af216bfda2d4363ca21820d7114f4...81310a3c02e577fe6aff78bf48018620c185ecc8","commits":[{"id":"81310a3c02e577fe6aff78bf48018620c185ecc8","message":"fix(template): explain blocked saves and focus missing name\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/81310a3c02e577fe6aff78bf48018620c185ecc8","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-09T07:10:54-07:00","added":["docs/governance/log/2026-09-09-template-save.md","reports/template-save-20260909/README.md","reports/template-save-20260909/summary.json"],"removed":[],"modified":["CLAUDE.md","apps/web/src/components/material-factory/NewTemplateButton.tsx","reports/contract-consumers.latest.json","reports/dependency-audit.latest.json","reports/governance-docs.latest.json","reports/governance.latest.json","reports/inference-acceptance.latest.json","reports/material-review-concurrency-guard.latest.json","reports/migrations.latest.json","reports/module-boundary.latest.json","reports/naming.latest.json","reports/order-concurrency-guard.latest.json","reports/production-acceptance.latest.json","reports/production-security.latest.json","reports/public-file-acceptance.latest.json","reports/public-file-integration.latest.json","reports/runtime-acceptance.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/script-acceptance.latest.json","reports/sidecar-tests.latest.json","reports/storyboard-director-guard.latest.json","reports/toolchain.latest.json","reports/ui-acceptance.latest.json","reports/validation-source.latest.json","scripts/lib/template-types-ui-acceptance.mjs"]}],"total_commits":0,"head_commit":{"id":"81310a3c02e577fe6aff78bf48018620c185ecc8","message":"fix(template): explain blocked saves and focus missing name\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/81310a3c02e577fe6aff78bf48018620c185ecc8","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-09T07:10:54-07:00","added":["docs/governance/log/2026-09-09-template-save.md","reports/template-save-20260909/README.md","reports/template-save-20260909/summary.json"],"removed":[],"modified":["CLAUDE.md","apps/web/src/components/material-factory/NewTemplateButton.tsx","reports/contract-consumers.latest.json","reports/dependency-audit.latest.json","reports/governance-docs.latest.json","reports/governance.latest.json","reports/inference-acceptance.latest.json","reports/material-review-concurrency-guard.latest.json","reports/migrations.latest.json","reports/module-boundary.latest.json","reports/naming.latest.json","reports/order-concurrency-guard.latest.json","reports/production-acceptance.latest.json","reports/production-security.latest.json","reports/public-file-acceptance.latest.json","reports/public-file-integration.latest.json","reports/runtime-acceptance.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/script-acceptance.latest.json","reports/sidecar-tests.latest.json","reports/storyboard-director-guard.latest.json","reports/toolchain.latest.json","reports/ui-acceptance.latest.json","reports/validation-source.latest.json","scripts/lib/template-types-ui-acceptance.mjs"]},"repository":{"id":57,"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":"image-generation","full_name":"luoanwu/image-generation","description":"","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":789873,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/image-generation/languages","html_url":"https://gitea.g-hi.com/luoanwu/image-generation","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/image-generation","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/image-generation.git","clone_url":"https://gitea.g-hi.com/luoanwu/image-generation.git","original_url":"","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":8,"open_issues_count":0,"open_pr_counter":1,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-07-06T17:04:22+08:00","updated_at":"2026-09-09T20:21: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
|
4
|
1788963061
|
1788963151
|
0
|
1788963059
|
1788963151
|
group: governance-${{ github.workflow }}-${{ githu group: governance-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: "true"
...
|
governance-governance.yml-refs/heads/main
|
1
|
Edit
Delete
|
|
23791
|
docs: record verified template save feedback relea docs: record verified template save feedback release...
|
57
|
5
|
governance.yml
|
161
|
5
|
0
|
refs/heads/main
|
cb557111869e1e2a4374646ab0043e21bf988d16
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"81310a3c02e577fe6aff78bf48018620c185ecc8","after":"cb557111869e1e2a4374646ab0043e21bf988d16","compare_url":"https://gitea.g-hi.com/luoanwu/image-generation/compare/81310a3c02e577fe6aff78bf48018620c185ecc8...cb557111869e1e2a4374646ab0043e21bf988d16","commits":[{"id":"cb557111869e1e2a4374646ab0043e21bf988d16","message":"docs: record verified template save feedback release\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/cb557111869e1e2a4374646ab0043e21bf988d16","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-09T07:19:54-07:00","added":["docs/releases/2026-09-09-template-save1.md"],"removed":[],"modified":["CLAUDE.md","docs/governance/log/2026-09-09-template-save.md","docs/releases/current.md","reports/governance-docs.latest.json","reports/template-save-20260909/README.md"]}],"total_commits":0,"head_commit":{"id":"cb557111869e1e2a4374646ab0043e21bf988d16","message":"docs: record verified template save feedback release\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/cb557111869e1e2a4374646ab0043e21bf988d16","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-09T07:19:54-07:00","added":["docs/releases/2026-09-09-template-save1.md"],"removed":[],"modified":["CLAUDE.md","docs/governance/log/2026-09-09-template-save.md","docs/releases/current.md","reports/governance-docs.latest.json","reports/template-save-20260909/README.md"]},"repository":{"id":57,"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":"image-generation","full_name":"luoanwu/image-generation","description":"","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":789968,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/image-generation/languages","html_url":"https://gitea.g-hi.com/luoanwu/image-generation","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/image-generation","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/image-generation.git","clone_url":"https://gitea.g-hi.com/luoanwu/image-generation.git","original_url":"","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":8,"open_issues_count":0,"open_pr_counter":1,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-07-06T17:04:22+08:00","updated_at":"2026-09-09T22:10:59+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
|
1788963601
|
1788963642
|
0
|
1788963600
|
1788963642
|
group: governance-${{ github.workflow }}-${{ githu group: governance-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: "true"
...
|
governance-governance.yml-refs/heads/main
|
1
|
Edit
Delete
|
|
23792
|
merge: retain completed template save deployment r merge: retain completed template save deployment records...
|
57
|
5
|
governance.yml
|
162
|
5
|
0
|
refs/heads/main
|
d433d91d383e5f7d9fee3713cf71de4bf0d9a5ac
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"cb557111869e1e2a4374646ab0043e21bf988d16","after":"d433d91d383e5f7d9fee3713cf71de4bf0d9a5ac","compare_url":"https://gitea.g-hi.com/luoanwu/image-generation/compare/cb557111869e1e2a4374646ab0043e21bf988d16...d433d91d383e5f7d9fee3713cf71de4bf0d9a5ac","commits":[{"id":"d433d91d383e5f7d9fee3713cf71de4bf0d9a5ac","message":"merge: retain completed template save deployment records\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/d433d91d383e5f7d9fee3713cf71de4bf0d9a5ac","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-09T07:21:39-07:00","added":["docs/releases/2026-09-09-template-save1.md"],"removed":[],"modified":["CLAUDE.md","docs/governance/log/2026-09-09-template-save.md","docs/releases/current.md","reports/governance-docs.latest.json","reports/template-save-20260909/README.md"]},{"id":"876caa602067a040ebf9a19fb7258de402d0f837","message":"test: verify combined image style and template save release\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/876caa602067a040ebf9a19fb7258de402d0f837","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-09T07:21:31-07:00","added":["reports/image-style-20260909/README.md"],"removed":[],"modified":["CLAUDE.md","docs/governance/log/2026-09-09-image-style.md","reports/contract-consumers.latest.json","reports/dependency-audit.latest.json","reports/governance-docs.latest.json","reports/governance.latest.json","reports/inference-acceptance.latest.json","reports/material-review-concurrency-guard.latest.json","reports/migrations.latest.json","reports/module-boundary.latest.json","reports/naming.latest.json","reports/order-concurrency-guard.latest.json","reports/production-acceptance.latest.json","reports/production-security.latest.json","reports/public-file-acceptance.latest.json","reports/public-file-integration.latest.json","reports/runtime-acceptance.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/script-acceptance.latest.json","reports/sidecar-tests.latest.json","reports/storyboard-director-guard.latest.json","reports/toolchain.latest.json","reports/ui-acceptance.latest.json","reports/validation-source.latest.json"]},{"id":"f8e5c27dfbccb74bd6209c73ffccb9d3a7940507","message":"merge: retain template save fix alongside image styles\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/f8e5c27dfbccb74bd6209c73ffccb9d3a7940507","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-09T07:12:33-07:00","added":["docs/governance/log/2026-09-09-template-save.md","reports/template-save-20260909/README.md","reports/template-save-20260909/summary.json"],"removed":[],"modified":["CLAUDE.md","apps/web/src/components/material-factory/NewTemplateButton.tsx","scripts/lib/template-types-ui-acceptance.mjs"]},{"id":"56f6a3d5d9742171a9acf9d915878b074b33658c","message":"fix(images): preserve selected visual style through generation\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/56f6a3d5d9742171a9acf9d915878b074b33658c","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-09T07:12:19-07:00","added":["docs/governance/log/2026-09-09-image-style.md","packages/contracts/src/image-visual-style.ts"],"removed":[],"modified":["CLAUDE.md","apps/api-fastify/src/modules/material-factory/material-factory.service.ts","apps/api-fastify/test/image-size.integration.test.ts","apps/api-nestjs/src/material-factory/material-factory.service.ts","apps/api-nestjs/test/image-size.integration.test.ts","apps/web/src/components/material-factory/CreateStudio.tsx","apps/web/src/components/material-factory/brand.ts","packages/contracts/src/image-type-prompt.test.ts","packages/contracts/src/index.ts","packages/contracts/src/material.ts","reports/contract-consumers.latest.json","reports/dependency-audit.latest.json","reports/governance-docs.latest.json","reports/governance.latest.json","reports/inference-acceptance.latest.json","reports/material-review-concurrency-guard.latest.json","reports/migrations.latest.json","reports/module-boundary.latest.json","reports/naming.latest.json","reports/order-concurrency-guard.latest.json","reports/production-acceptance.latest.json","reports/production-security.latest.json","reports/public-file-acceptance.latest.json","reports/public-file-integration.latest.json","reports/runtime-acceptance.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/script-acceptance.latest.json","reports/sidecar-tests.latest.json","reports/storyboard-director-guard.latest.json","reports/toolchain.latest.json","reports/ui-acceptance.latest.json","reports/validation-source.latest.json","scripts/lib/image-creation-ui-acceptance.mjs"]}],"total_commits":0,"head_commit":{"id":"d433d91d383e5f7d9fee3713cf71de4bf0d9a5ac","message":"merge: retain completed template save deployment records\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/d433d91d383e5f7d9fee3713cf71de4bf0d9a5ac","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-09T07:21:39-07:00","added":["docs/releases/2026-09-09-template-save1.md"],"removed":[],"modified":["CLAUDE.md","docs/governance/log/2026-09-09-template-save.md","docs/releases/current.md","reports/governance-docs.latest.json","reports/template-save-20260909/README.md"]},"repository":{"id":57,"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":"image-generation","full_name":"luoanwu/image-generation","description":"","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":790015,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/image-generation/languages","html_url":"https://gitea.g-hi.com/luoanwu/image-generation","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/image-generation","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/image-generation.git","clone_url":"https://gitea.g-hi.com/luoanwu/image-generation.git","original_url":"","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":8,"open_issues_count":0,"open_pr_counter":1,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-07-06T17:04:22+08:00","updated_at":"2026-09-09T22:20:00+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
|
1788963718
|
1788963759
|
0
|
1788963717
|
1788963759
|
group: governance-${{ github.workflow }}-${{ githu group: governance-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: "true"
...
|
governance-governance.yml-refs/heads/main
|
1
|
Edit
Delete
|
|
23793
|
docs: record image style deployment and verificati docs: record image style deployment and verification boundary...
|
57
|
5
|
governance.yml
|
163
|
5
|
0
|
refs/heads/main
|
2af2a14c70c41fda3e2d492d31c54dd765c8b8de
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"d433d91d383e5f7d9fee3713cf71de4bf0d9a5ac","after":"2af2a14c70c41fda3e2d492d31c54dd765c8b8de","compare_url":"https://gitea.g-hi.com/luoanwu/image-generation/compare/d433d91d383e5f7d9fee3713cf71de4bf0d9a5ac...2af2a14c70c41fda3e2d492d31c54dd765c8b8de","commits":[{"id":"2af2a14c70c41fda3e2d492d31c54dd765c8b8de","message":"docs: record image style deployment and verification boundary\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/2af2a14c70c41fda3e2d492d31c54dd765c8b8de","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-09T07:30:44-07:00","added":["docs/releases/2026-09-09-style1.md"],"removed":[],"modified":["CLAUDE.md","docs/governance/log/2026-09-09-image-style.md","docs/releases/current.md","reports/contract-consumers.latest.json","reports/governance-docs.latest.json","reports/governance.latest.json","reports/material-review-concurrency-guard.latest.json","reports/migrations.latest.json","reports/module-boundary.latest.json","reports/naming.latest.json","reports/order-concurrency-guard.latest.json","reports/production-security.latest.json","reports/public-file-integration.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/storyboard-director-guard.latest.json","reports/toolchain.latest.json","reports/validation-source.latest.json"]}],"total_commits":0,"head_commit":{"id":"2af2a14c70c41fda3e2d492d31c54dd765c8b8de","message":"docs: record image style deployment and verification boundary\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/2af2a14c70c41fda3e2d492d31c54dd765c8b8de","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-09T07:30:44-07:00","added":["docs/releases/2026-09-09-style1.md"],"removed":[],"modified":["CLAUDE.md","docs/governance/log/2026-09-09-image-style.md","docs/releases/current.md","reports/contract-consumers.latest.json","reports/governance-docs.latest.json","reports/governance.latest.json","reports/material-review-concurrency-guard.latest.json","reports/migrations.latest.json","reports/module-boundary.latest.json","reports/naming.latest.json","reports/order-concurrency-guard.latest.json","reports/production-security.latest.json","reports/public-file-integration.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/storyboard-director-guard.latest.json","reports/toolchain.latest.json","reports/validation-source.latest.json"]},"repository":{"id":57,"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":"image-generation","full_name":"luoanwu/image-generation","description":"","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":790280,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/image-generation/languages","html_url":"https://gitea.g-hi.com/luoanwu/image-generation","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/image-generation","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/image-generation.git","clone_url":"https://gitea.g-hi.com/luoanwu/image-generation.git","original_url":"","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":8,"open_issues_count":0,"open_pr_counter":1,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-07-06T17:04:22+08:00","updated_at":"2026-09-09T22:21:57+08:00","archived_at":"1970-01-01T08:00:00+08:00","permissions":{"admin":true,"push":true,"pull":true},"has_code":true,"has_issues":true,"internal_tracker":{"enable_time_tracker":true,"allow_only_contributors_to_track_time":true,"enable_issue_dependencies":true},"has_wiki":true,"has_pull_requests":true,"has_projects":true,"projects_mode":"all","has_releases":true,"has_packages":true,"has_actions":true,"ignore_whitespace_conflicts":false,"allow_merge_commits":true,"allow_rebase":true,"allow_rebase_explicit":true,"allow_squash_merge":true,"allow_fast_forward_only_merge":true,"allow_rebase_update":true,"allow_manual_merge":false,"autodetect_manual_merge":false,"default_delete_branch_after_merge":false,"default_merge_style":"merge","default_allow_maintainer_edit":true,"avatar_url":"","internal":false,"mirror_interval":"","object_format_name":"sha1","mirror_updated":"0001-01-01T00:00:00Z","topics":[],"licenses":[]},"pusher":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"sender":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"}}...
|
push
|
2
|
4
|
1788964255
|
1788964295
|
0
|
1788964255
|
1788964295
|
group: governance-${{ github.workflow }}-${{ githu group: governance-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: "true"
...
|
governance-governance.yml-refs/heads/main
|
1
|
Edit
Delete
|
|
23794
|
test: verify combined template master and image st test: verify combined template master and image style release...
|
57
|
5
|
governance.yml
|
164
|
5
|
0
|
refs/heads/main
|
a561550788227674837cb3738304f722c034785a
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"2af2a14c70c41fda3e2d492d31c54dd765c8b8de","after":"a561550788227674837cb3738304f722c034785a","compare_url":"https://gitea.g-hi.com/luoanwu/image-generation/compare/2af2a14c70c41fda3e2d492d31c54dd765c8b8de...a561550788227674837cb3738304f722c034785a","commits":[{"id":"a561550788227674837cb3738304f722c034785a","message":"test: verify combined template master and image style release\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/a561550788227674837cb3738304f722c034785a","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-09T07:49:13-07:00","added":["reports/template-current-20260909/summary.json"],"removed":[],"modified":["CLAUDE.md","apps/api-nestjs/test/material-production-modes.integration.test.ts","docs/governance/log/2026-09-09-template-current.md","reports/contract-consumers.latest.json","reports/dependency-audit.latest.json","reports/governance-docs.latest.json","reports/governance.latest.json","reports/inference-acceptance.latest.json","reports/material-review-concurrency-guard.latest.json","reports/migrations.latest.json","reports/module-boundary.latest.json","reports/naming.latest.json","reports/order-concurrency-guard.latest.json","reports/production-acceptance.latest.json","reports/production-security.latest.json","reports/public-file-acceptance.latest.json","reports/public-file-integration.latest.json","reports/runtime-acceptance.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/script-acceptance.latest.json","reports/sidecar-tests.latest.json","reports/storyboard-director-guard.latest.json","reports/toolchain.latest.json","reports/ui-acceptance.latest.json","reports/validation-source.latest.json"]},{"id":"a72b104c2c9655dba3ad8fe20f71bc1d6248b0e9","message":"Merge branch 'main' into feat/template-making-uiux\n\n# Conflicts:\n#\tCLAUDE.md\n#\treports/inference-acceptance.latest.json\n#\treports/production-acceptance.latest.json\n#\treports/public-file-acceptance.latest.json\n#\treports/runtime-acceptance.latest.json\n#\treports/script-acceptance.latest.json\n#\treports/sidecar-tests.latest.json\n#\treports/ui-acceptance.latest.json\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/a72b104c2c9655dba3ad8fe20f71bc1d6248b0e9","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-09T07:36:20-07:00","added":["docs/governance/log/2026-09-09-image-style.md","docs/releases/2026-09-09-style1.md","packages/contracts/src/image-visual-style.ts","reports/image-style-20260909/README.md"],"removed":[],"modified":["CLAUDE.md","apps/api-fastify/src/modules/material-factory/material-factory.service.ts","apps/api-fastify/test/image-size.integration.test.ts","apps/api-nestjs/src/material-factory/material-factory.service.ts","apps/api-nestjs/test/image-size.integration.test.ts","apps/web/src/components/material-factory/CreateStudio.tsx","apps/web/src/components/material-factory/brand.ts","docs/releases/current.md","packages/contracts/src/image-type-prompt.test.ts","packages/contracts/src/index.ts","packages/contracts/src/material.ts","reports/contract-consumers.latest.json","reports/dependency-audit.latest.json","reports/governance-docs.latest.json","reports/governance.latest.json","reports/inference-acceptance.latest.json","reports/material-review-concurrency-guard.latest.json","reports/migrations.latest.json","reports/module-boundary.latest.json","reports/naming.latest.json","reports/order-concurrency-guard.latest.json","reports/production-acceptance.latest.json","reports/production-security.latest.json","reports/public-file-acceptance.latest.json","reports/public-file-integration.latest.json","reports/runtime-acceptance.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/script-acceptance.latest.json","reports/sidecar-tests.latest.json","reports/storyboard-director-guard.latest.json","reports/toolchain.latest.json","reports/ui-acceptance.latest.json","reports/validation-source.latest.json","scripts/lib/image-creation-ui-acceptance.mjs"]},{"id":"4825b30909c987d841b72552e7b30b56d4d7ff3b","message":"fix(template): display each saved template master in canvas and preview\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/4825b30909c987d841b72552e7b30b56d4d7ff3b","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-09T07:35:55-07:00","added":["apps/web/src/components/material-factory/template-master-source.ts","docs/governance/log/2026-09-09-template-current.md","reports/template-current-20260909/README.md"],"removed":[],"modified":["CLAUDE.md","apps/web/src/components/material-factory/MasterCanvas.tsx","apps/web/src/components/material-factory/TemplateMakingCanvas.tsx","apps/web/src/components/material-factory/TemplatePreviewButton.tsx","reports/inference-acceptance.latest.json","reports/production-acceptance.latest.json","reports/public-file-acceptance.latest.json","reports/runtime-acceptance.latest.json","reports/script-acceptance.latest.json","reports/sidecar-tests.latest.json","reports/ui-acceptance.latest.json","scripts/lib/template-types-ui-acceptance.mjs"]}],"total_commits":0,"head_commit":{"id":"a561550788227674837cb3738304f722c034785a","message":"test: verify combined template master and image style release\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/a561550788227674837cb3738304f722c034785a","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-09T07:49:13-07:00","added":["reports/template-current-20260909/summary.json"],"removed":[],"modified":["CLAUDE.md","apps/api-nestjs/test/material-production-modes.integration.test.ts","docs/governance/log/2026-09-09-template-current.md","reports/contract-consumers.latest.json","reports/dependency-audit.latest.json","reports/governance-docs.latest.json","reports/governance.latest.json","reports/inference-acceptance.latest.json","reports/material-review-concurrency-guard.latest.json","reports/migrations.latest.json","reports/module-boundary.latest.json","reports/naming.latest.json","reports/order-concurrency-guard.latest.json","reports/production-acceptance.latest.json","reports/production-security.latest.json","reports/public-file-acceptance.latest.json","reports/public-file-integration.latest.json","reports/runtime-acceptance.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/script-acceptance.latest.json","reports/sidecar-tests.latest.json","reports/storyboard-director-guard.latest.json","reports/toolchain.latest.json","reports/ui-acceptance.latest.json","reports/validation-source.latest.json"]},"repository":{"id":57,"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":"image-generation","full_name":"luoanwu/image-generation","description":"","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":790332,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/image-generation/languages","html_url":"https://gitea.g-hi.com/luoanwu/image-generation","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/image-generation","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/image-generation.git","clone_url":"https://gitea.g-hi.com/luoanwu/image-generation.git","original_url":"","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":8,"open_issues_count":0,"open_pr_counter":1,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-07-06T17:04:22+08:00","updated_at":"2026-09-09T22:30: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
|
4
|
1788965375
|
1788965466
|
0
|
1788965374
|
1788965466
|
group: governance-${{ github.workflow }}-${{ githu group: governance-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: "true"
...
|
governance-governance.yml-refs/heads/main
|
1
|
Edit
Delete
|
|
23795
|
docs: record verified template master display rele docs: record verified template master display release...
|
57
|
5
|
governance.yml
|
165
|
5
|
0
|
refs/heads/main
|
fcbee15d07deb0a3212286790442541c9a86de8b
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"a561550788227674837cb3738304f722c034785a","after":"fcbee15d07deb0a3212286790442541c9a86de8b","compare_url":"https://gitea.g-hi.com/luoanwu/image-generation/compare/a561550788227674837cb3738304f722c034785a...fcbee15d07deb0a3212286790442541c9a86de8b","commits":[{"id":"fcbee15d07deb0a3212286790442541c9a86de8b","message":"docs: record verified template master display release\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/fcbee15d07deb0a3212286790442541c9a86de8b","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-09T07:54:32-07:00","added":["docs/releases/2026-09-09-template-current1.md"],"removed":[],"modified":["CLAUDE.md","docs/governance/log/2026-09-09-template-current.md","docs/releases/current.md","reports/contract-consumers.latest.json","reports/governance-docs.latest.json","reports/governance.latest.json","reports/material-review-concurrency-guard.latest.json","reports/migrations.latest.json","reports/module-boundary.latest.json","reports/naming.latest.json","reports/order-concurrency-guard.latest.json","reports/production-security.latest.json","reports/public-file-integration.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/storyboard-director-guard.latest.json","reports/template-current-20260909/README.md","reports/toolchain.latest.json","reports/validation-source.latest.json"]}],"total_commits":0,"head_commit":{"id":"fcbee15d07deb0a3212286790442541c9a86de8b","message":"docs: record verified template master display release\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/fcbee15d07deb0a3212286790442541c9a86de8b","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-09T07:54:32-07:00","added":["docs/releases/2026-09-09-template-current1.md"],"removed":[],"modified":["CLAUDE.md","docs/governance/log/2026-09-09-template-current.md","docs/releases/current.md","reports/contract-consumers.latest.json","reports/governance-docs.latest.json","reports/governance.latest.json","reports/material-review-concurrency-guard.latest.json","reports/migrations.latest.json","reports/module-boundary.latest.json","reports/naming.latest.json","reports/order-concurrency-guard.latest.json","reports/production-security.latest.json","reports/public-file-integration.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/storyboard-director-guard.latest.json","reports/template-current-20260909/README.md","reports/toolchain.latest.json","reports/validation-source.latest.json"]},"repository":{"id":57,"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":"image-generation","full_name":"luoanwu/image-generation","description":"","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":790550,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/image-generation/languages","html_url":"https://gitea.g-hi.com/luoanwu/image-generation","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/image-generation","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/image-generation.git","clone_url":"https://gitea.g-hi.com/luoanwu/image-generation.git","original_url":"","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":8,"open_issues_count":0,"open_pr_counter":1,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-07-06T17:04:22+08:00","updated_at":"2026-09-09T22:49:34+08:00","archived_at":"1970-01-01T08:00:00+08:00","permissions":{"admin":true,"push":true,"pull":true},"has_code":true,"has_issues":true,"internal_tracker":{"enable_time_tracker":true,"allow_only_contributors_to_track_time":true,"enable_issue_dependencies":true},"has_wiki":true,"has_pull_requests":true,"has_projects":true,"projects_mode":"all","has_releases":true,"has_packages":true,"has_actions":true,"ignore_whitespace_conflicts":false,"allow_merge_commits":true,"allow_rebase":true,"allow_rebase_explicit":true,"allow_squash_merge":true,"allow_fast_forward_only_merge":true,"allow_rebase_update":true,"allow_manual_merge":false,"autodetect_manual_merge":false,"default_delete_branch_after_merge":false,"default_merge_style":"merge","default_allow_maintainer_edit":true,"avatar_url":"","internal":false,"mirror_interval":"","object_format_name":"sha1","mirror_updated":"0001-01-01T00:00:00Z","topics":[],"licenses":[]},"pusher":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"sender":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"}}...
|
push
|
2
|
4
|
1788965678
|
1788965718
|
0
|
1788965677
|
1788965718
|
group: governance-${{ github.workflow }}-${{ githu group: governance-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: "true"
...
|
governance-governance.yml-refs/heads/main
|
1
|
Edit
Delete
|
|
23796
|
docs: add 2026-09-09 project deep analysis round
|
57
|
5
|
governance.yml
|
166
|
5
|
0
|
refs/heads/main
|
126e9c2c24fbb30db684112abf9128a291bb38b7
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"fcbee15d07deb0a3212286790442541c9a86de8b","after":"126e9c2c24fbb30db684112abf9128a291bb38b7","compare_url":"https://gitea.g-hi.com/luoanwu/image-generation/compare/fcbee15d07deb0a3212286790442541c9a86de8b...126e9c2c24fbb30db684112abf9128a291bb38b7","commits":[{"id":"126e9c2c24fbb30db684112abf9128a291bb38b7","message":"docs: add 2026-09-09 project deep analysis round\n\nBind to HEAD 2af2a14c (= release-20260909-style1 source), reconcile the\n09-07 / r18 / business / frontend rounds, record 12 adversarial findings\non surfaces added since 09-08 and 5 new security findings; register the\nround in the index, the CLAUDE.md truth map row and the governance log.\n\nCo-Authored-By: Claude Fable 5.1 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/126e9c2c24fbb30db684112abf9128a291bb38b7","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-09T08:11:46-07:00","added":["docs/governance/log/2026-09-09-deep-analysis.md","reports/project-deep-analysis-2026-09-09.md","reports/project-deep-analysis-2026-09-09/README.md"],"removed":[],"modified":["CLAUDE.md","reports/project-deep-analysis.latest.md"]}],"total_commits":0,"head_commit":{"id":"126e9c2c24fbb30db684112abf9128a291bb38b7","message":"docs: add 2026-09-09 project deep analysis round\n\nBind to HEAD 2af2a14c (= release-20260909-style1 source), reconcile the\n09-07 / r18 / business / frontend rounds, record 12 adversarial findings\non surfaces added since 09-08 and 5 new security findings; register the\nround in the index, the CLAUDE.md truth map row and the governance log.\n\nCo-Authored-By: Claude Fable 5.1 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/126e9c2c24fbb30db684112abf9128a291bb38b7","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-09T08:11:46-07:00","added":["docs/governance/log/2026-09-09-deep-analysis.md","reports/project-deep-analysis-2026-09-09.md","reports/project-deep-analysis-2026-09-09/README.md"],"removed":[],"modified":["CLAUDE.md","reports/project-deep-analysis.latest.md"]},"repository":{"id":57,"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":"image-generation","full_name":"luoanwu/image-generation","description":"","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":790602,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/image-generation/languages","html_url":"https://gitea.g-hi.com/luoanwu/image-generation","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/image-generation","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/image-generation.git","clone_url":"https://gitea.g-hi.com/luoanwu/image-generation.git","original_url":"","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":8,"open_issues_count":0,"open_pr_counter":1,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-07-06T17:04:22+08:00","updated_at":"2026-09-09T22:54:38+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
|
1788966725
|
1788966765
|
0
|
1788966723
|
1788966765
|
group: governance-${{ github.workflow }}-${{ githu group: governance-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: "true"
...
|
governance-governance.yml-refs/heads/main
|
1
|
Edit
Delete
|
|
23797
|
docs(governance): re-green heavy baseline rows for docs(governance): re-green heavy baseline rows for rate limiting at cc0ce5e4...
|
57
|
5
|
governance.yml
|
167
|
5
|
0
|
refs/heads/main
|
9c6389b174f411b411ccacd32f2d6816afeeb337
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"126e9c2c24fbb30db684112abf9128a291bb38b7","after":"9c6389b174f411b411ccacd32f2d6816afeeb337","compare_url":"https://gitea.g-hi.com/luoanwu/image-generation/compare/126e9c2c24fbb30db684112abf9128a291bb38b7...9c6389b174f411b411ccacd32f2d6816afeeb337","commits":[{"id":"9c6389b174f411b411ccacd32f2d6816afeeb337","message":"docs(governance): re-green heavy baseline rows for rate limiting at cc0ce5e4\n\nSeven isolated gates passed on the second round after relaxing the default\nbudgets; evidence summary in reports/rate-limit-2026-09-09, G33 now merged\nand awaiting deployment.\n\nCo-Authored-By: Claude Fable 5.1 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/9c6389b174f411b411ccacd32f2d6816afeeb337","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-09T08:34:58-07:00","added":["reports/admin-brands.desktop.png","reports/admin-brands.mobile.png","reports/creative-history-hidden.desktop.png","reports/creative-history-restore.mobile.png","reports/director-workbench.desktop.png","reports/director-workbench.mobile.png","reports/image-edit-1135.png","reports/image-edit-1440.png","reports/image-edit-390.png","reports/image-edit-768.png","reports/image-edit-mobile-form.png","reports/image-edit-result.png","reports/rate-limit-2026-09-09/README.md","reports/rate-limit-2026-09-09/gate-results.round1.jsonl","reports/rate-limit-2026-09-09/gate-results.round2.jsonl"],"removed":[],"modified":["CLAUDE.md","docs/governance/log/2026-09-09-rate-limit.md","reports/admin-mobile.png","reports/content-detail.review-desktop.png","reports/contract-consumers.latest.json","reports/dependency-audit.latest.json","reports/governance-docs.latest.json","reports/governance.latest.json","reports/image-creation-1135.png","reports/image-creation-1440.png","reports/inference-acceptance.latest.json","reports/material-review-concurrency-guard.latest.json","reports/migrations.latest.json","reports/model-api-key-saved.png","reports/model-credential-error.desktop.png","reports/model-credential-error.mobile.png","reports/module-boundary.latest.json","reports/naming.latest.json","reports/order-concurrency-guard.latest.json","reports/prd-retry.mobile.png","reports/prd-review.desktop.png","reports/production-acceptance.latest.json","reports/production-delivery-released.desktop.png","reports/production-delivery-revoked.mobile.png","reports/production-pagination.desktop.png","reports/production-pagination.mobile.png","reports/production-review-preview.desktop.png","reports/production-security.latest.json","reports/production-single-tenant-create.desktop.png","reports/production-single-tenant-separation.desktop.png","reports/public-file-acceptance.latest.json","reports/public-file-integration.latest.json","reports/runtime-acceptance.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/script-acceptance.latest.json","reports/script-generation-queue.png","reports/sidecar-tests.latest.json","reports/storyboard-director-guard.latest.json","reports/storyboard-frame-dialog.desktop.first.png","reports/storyboard-frame-dialog.desktop.last.png","reports/template-making.1135.png","reports/template-making.1280.png","reports/template-making.1440.png","reports/template-saved-master.APPLICATION.png","reports/template-saved-master.GENERAL.png","reports/template-saved-master.SCENE.png","reports/template-types.desktop.png","reports/toolchain.latest.json","reports/ui-acceptance.desktop.png","reports/ui-acceptance.draft-import.png","reports/ui-acceptance.latest.json","reports/ui-acceptance.mobile.png","reports/ui-acceptance.production.png","reports/ux-edit.desktop.png","reports/ux-home.desktop.png","reports/ux-home.mobile.png","reports/ux-intake.desktop.png","reports/validation-source.latest.json","reports/video-batch-paused.mobile.png","reports/video-regenerate-2026-09-08/desktop.png","reports/video-regenerate-2026-09-08/mobile.png"]},{"id":"1b4745ed1000835ca9cbd402c33db1b4b71a1e9f","message":"fix(rate-limit): relax default budgets after acceptance hit the human actor limit\n\nThe first isolated gate round rejected one real submission (submit.human.actor=1)\nduring the storyboard save flow, so the initial 30/min per-actor budget also\nthrottles ordinary continuous editing. Raise defaults to BFF 3000/600, human\n300/1200, machine 600/3000 per minute; callback buckets unchanged.\n\nCo-Authored-By: Claude Fable 5.1 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/1b4745ed1000835ca9cbd402c33db1b4b71a1e9f","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-09T08:26:05-07:00","added":["reports/image-creation-1135.png","reports/image-creation-1440.png","reports/image-creation-390.png","reports/image-creation-768.png","reports/storyboard-asset-dialog.desktop.png","reports/storyboard-asset-dialog.mobile.png","reports/storyboard-frame-dialog.desktop.first.png","reports/storyboard-frame-dialog.desktop.last.png","reports/storyboard-frame-dialog.mobile.first.png","reports/storyboard-frame-dialog.mobile.last.png","reports/storyboard-frame-dialog.mobile.saved.png","reports/template-making.1135.png","reports/template-making.1280.png","reports/template-making.1440.png","reports/template-making.390.png","reports/template-making.768.png","reports/template-preview.edit.png","reports/template-preview.templates.png","reports/template-save-ready.APPLICATION.png","reports/template-save-ready.GENERAL.png","reports/template-save-ready.SCENE.png","reports/template-saved-master.APPLICATION.png","reports/template-saved-master.GENERAL.png","reports/template-saved-master.SCENE.png"],"removed":[],"modified":["deploy/vm/.env.example","docs/deploy-vm.md","docs/governance/log/2026-09-09-rate-limit.md","packages/contracts/src/rate-limit-policy.test.ts","packages/contracts/src/rate-limit-policy.ts","reports/admin-desktop.png","reports/content-detail.brief-desktop.png","reports/content-detail.images-desktop.png","reports/content-detail.output-desktop.png","reports/content-detail.output-mobile.png","reports/content-detail.plans-desktop.png","reports/content-detail.review-desktop.png","reports/contract-consumers.latest.json","reports/creative-quality.desktop.png","reports/dependency-audit.latest.json","reports/governance-docs.latest.json","reports/governance.latest.json","reports/inference-acceptance.latest.json","reports/material-review-concurrency-guard.latest.json","reports/migrations.latest.json","reports/model-api-key-saved.png","reports/model-credential-error.desktop.png","reports/model-credential-error.mobile.png","reports/module-boundary.latest.json","reports/naming.latest.json","reports/order-concurrency-guard.latest.json","reports/production-acceptance.latest.json","reports/production-security.latest.json","reports/public-file-acceptance.latest.json","reports/public-file-integration.latest.json","reports/runtime-acceptance.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/script-acceptance.latest.json","reports/sidecar-tests.latest.json","reports/storyboard-director-guard.latest.json","reports/template-types.desktop.png","reports/template-types.mobile.png","reports/toolchain.latest.json","reports/ui-acceptance.latest.json","reports/ui-failure.png","reports/ui-failure.txt","reports/ux-edit.desktop.png","reports/ux-home.desktop.png","reports/validation-source.latest.json"]},{"id":"1021c02a1e533a2237bd3b94371fc04c7289e846","message":"merge: bring main template-current and deep-analysis records into rate-limit branch\n\nCo-Authored-By: Claude Fable 5.1 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/1021c02a1e533a2237bd3b94371fc04c7289e846","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-09T08:15:30-07:00","added":["apps/web/src/components/material-factory/template-master-source.ts","docs/governance/log/2026-09-09-deep-analysis.md","docs/governance/log/2026-09-09-template-current.md","docs/releases/2026-09-09-template-current1.md","reports/project-deep-analysis-2026-09-09.md","reports/project-deep-analysis-2026-09-09/README.md","reports/template-current-20260909/README.md","reports/template-current-20260909/summary.json"],"removed":[],"modified":["apps/api-nestjs/test/material-production-modes.integration.test.ts","apps/web/src/components/material-factory/MasterCanvas.tsx","apps/web/src/components/material-factory/TemplateMakingCanvas.tsx","apps/web/src/components/material-factory/TemplatePreviewButton.tsx","docs/releases/current.md","reports/contract-consumers.latest.json","reports/dependency-audit.latest.json","reports/governance-docs.latest.json","reports/governance.latest.json","reports/inference-acceptance.latest.json","reports/material-review-concurrency-guard.latest.json","reports/migrations.latest.json","reports/module-boundary.latest.json","reports/naming.latest.json","reports/order-concurrency-guard.latest.json","reports/production-acceptance.latest.json","reports/production-security.latest.json","reports/project-deep-analysis.latest.md","reports/public-file-acceptance.latest.json","reports/public-file-integration.latest.json","reports/runtime-acceptance.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/script-acceptance.latest.json","reports/sidecar-tests.latest.json","reports/storyboard-director-guard.latest.json","reports/toolchain.latest.json","reports/ui-acceptance.latest.json","reports/validation-source.latest.json","scripts/lib/template-types-ui-acceptance.mjs"]},{"id":"ceb98eba370833efd9e362b3963fe22030b2df29","message":"docs(governance): record rate-limit round as G33 and mark heavy rows pending re-verification\n\nSource fingerprint changed on this worktree, so the eleven source-bound heavy-gate rows are\nmarked pending instead of claiming GREEN; details, thresholds, evidence and open items in\ndocs/governance/log/2026-09-09-rate-limit.md.\n\nCo-Authored-By: Claude Fable 5.1 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/ceb98eba370833efd9e362b3963fe22030b2df29","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-09T08:11:57-07:00","added":["docs/governance/log/2026-09-09-rate-limit.md"],"removed":[],"modified":["CLAUDE.md"]},{"id":"a2123e86fe02b4062f37dc58a46a6da63f0e445a","message":"feat(rate-limit): sliding-window request limits for BFF, callbacks and formal submissions\n\nPolicy single source in packages/contracts/src/rate-limit-policy.ts (RATE_LIMIT_* env,\nenabled with generous defaults when unset; Redis ZSET sliding window in one Lua script;\nmemory store for local runs and tests; no schema change).\n\n- Web BFF: per verified principal + client address, read and mutation budgets split,\n 429 with Retry-After in the existing { code, message } envelope.\n- NestJS + Fastify: provider callback burst limit per providerOperationId plus a shared\n callback identity budget (receipt dedup unchanged); SubmissionRateLimitGuard /\n registerSubmissionRateLimit after the trusted-runtime check on material-factory,\n scripts, creative-projects, shijie and material-productions write routes, per\n operator then per tenant with separate HUMAN and machine thresholds.\n- Rejections counted in \u003cprefix\u003e:rejections for observation; compose passes RATE_LIMIT_*\n through to web / api-nestjs / api-fastify; docs/deploy-vm.md lists the variables.\n- check-production-security accepts a guard list that still starts with MaterialRuntimeGuard.\n\nTests: contracts 10, web 3 (node --test), NestJS 4, Fastify 5 (both with a real Redis case).\n\nCo-Authored-By: Claude Fable 5.1 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/a2123e86fe02b4062f37dc58a46a6da63f0e445a","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-09T08:11:57-07:00","added":["apps/api-fastify/src/modules/rate-limit.ts","apps/api-fastify/src/plugins/rate-limit.ts","apps/api-fastify/test/rate-limit.test.ts","apps/api-nestjs/src/rate-limit/rate-limit.module.ts","apps/api-nestjs/src/rate-limit/rate-limit.service.ts","apps/api-nestjs/src/rate-limit/submission-rate-limit.guard.ts","apps/api-nestjs/test/rate-limit.test.ts","apps/web/src/lib/bff-rate-limit.test.mjs","apps/web/src/lib/bff-rate-limit.ts","apps/web/src/lib/server/rate-limit.ts","packages/contracts/src/rate-limit-policy.test.ts","packages/contracts/src/rate-limit-policy.ts"],"removed":[],"modified":["apps/api-fastify/src/app.ts","apps/api-fastify/src/routes/creative-project.ts","apps/api-fastify/src/routes/material-factory.ts","apps/api-fastify/src/routes/material-production.ts","apps/api-fastify/src/routes/shijie.ts","apps/api-fastify/src/types.ts","apps/api-nestjs/src/app.module.ts","apps/api-nestjs/src/creative-project/creative-project.controller.ts","apps/api-nestjs/src/material-factory/material-factory.controller.ts","apps/api-nestjs/src/material-factory/shooting-script.controller.ts","apps/api-nestjs/src/material-production/material-production.controller.ts","apps/api-nestjs/src/shijie/shijie.controller.ts","apps/web/src/app/api/[...path]/route.ts","deploy/vm/.env.example","deploy/vm/docker-compose.yml","docs/deploy-vm.md","packages/contracts/src/index.ts","reports/contract-consumers.latest.json","reports/governance-docs.latest.json","reports/governance.latest.json","reports/material-review-concurrency-guard.latest.json","reports/migrations.latest.json","reports/module-boundary.latest.json","reports/naming.latest.json","reports/order-concurrency-guard.latest.json","reports/production-security.latest.json","reports/public-file-integration.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/storyboard-director-guard.latest.json","reports/toolchain.latest.json","reports/validation-source.latest.json","scripts/check-production-security.mjs"]}],"total_commits":0,"head_commit":{"id":"9c6389b174f411b411ccacd32f2d6816afeeb337","message":"docs(governance): re-green heavy baseline rows for rate limiting at cc0ce5e4\n\nSeven isolated gates passed on the second round after relaxing the default\nbudgets; evidence summary in reports/rate-limit-2026-09-09, G33 now merged\nand awaiting deployment.\n\nCo-Authored-By: Claude Fable 5.1 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/9c6389b174f411b411ccacd32f2d6816afeeb337","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-09T08:34:58-07:00","added":["reports/admin-brands.desktop.png","reports/admin-brands.mobile.png","reports/creative-history-hidden.desktop.png","reports/creative-history-restore.mobile.png","reports/director-workbench.desktop.png","reports/director-workbench.mobile.png","reports/image-edit-1135.png","reports/image-edit-1440.png","reports/image-edit-390.png","reports/image-edit-768.png","reports/image-edit-mobile-form.png","reports/image-edit-result.png","reports/rate-limit-2026-09-09/README.md","reports/rate-limit-2026-09-09/gate-results.round1.jsonl","reports/rate-limit-2026-09-09/gate-results.round2.jsonl"],"removed":[],"modified":["CLAUDE.md","docs/governance/log/2026-09-09-rate-limit.md","reports/admin-mobile.png","reports/content-detail.review-desktop.png","reports/contract-consumers.latest.json","reports/dependency-audit.latest.json","reports/governance-docs.latest.json","reports/governance.latest.json","reports/image-creation-1135.png","reports/image-creation-1440.png","reports/inference-acceptance.latest.json","reports/material-review-concurrency-guard.latest.json","reports/migrations.latest.json","reports/model-api-key-saved.png","reports/model-credential-error.desktop.png","reports/model-credential-error.mobile.png","reports/module-boundary.latest.json","reports/naming.latest.json","reports/order-concurrency-guard.latest.json","reports/prd-retry.mobile.png","reports/prd-review.desktop.png","reports/production-acceptance.latest.json","reports/production-delivery-released.desktop.png","reports/production-delivery-revoked.mobile.png","reports/production-pagination.desktop.png","reports/production-pagination.mobile.png","reports/production-review-preview.desktop.png","reports/production-security.latest.json","reports/production-single-tenant-create.desktop.png","reports/production-single-tenant-separation.desktop.png","reports/public-file-acceptance.latest.json","reports/public-file-integration.latest.json","reports/runtime-acceptance.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/script-acceptance.latest.json","reports/script-generation-queue.png","reports/sidecar-tests.latest.json","reports/storyboard-director-guard.latest.json","reports/storyboard-frame-dialog.desktop.first.png","reports/storyboard-frame-dialog.desktop.last.png","reports/template-making.1135.png","reports/template-making.1280.png","reports/template-making.1440.png","reports/template-saved-master.APPLICATION.png","reports/template-saved-master.GENERAL.png","reports/template-saved-master.SCENE.png","reports/template-types.desktop.png","reports/toolchain.latest.json","reports/ui-acceptance.desktop.png","reports/ui-acceptance.draft-import.png","reports/ui-acceptance.latest.json","reports/ui-acceptance.mobile.png","reports/ui-acceptance.production.png","reports/ux-edit.desktop.png","reports/ux-home.desktop.png","reports/ux-home.mobile.png","reports/ux-intake.desktop.png","reports/validation-source.latest.json","reports/video-batch-paused.mobile.png","reports/video-regenerate-2026-09-08/desktop.png","reports/video-regenerate-2026-09-08/mobile.png"]},"repository":{"id":57,"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":"image-generation","full_name":"luoanwu/image-generation","description":"","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":790678,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/image-generation/languages","html_url":"https://gitea.g-hi.com/luoanwu/image-generation","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/image-generation","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/image-generation.git","clone_url":"https://gitea.g-hi.com/luoanwu/image-generation.git","original_url":"","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":8,"open_issues_count":0,"open_pr_counter":1,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-07-06T17:04:22+08:00","updated_at":"2026-09-09T23:12:03+08:00","archived_at":"1970-01-01T08:00:00+08:00","permissions":{"admin":true,"push":true,"pull":true},"has_code":true,"has_issues":true,"internal_tracker":{"enable_time_tracker":true,"allow_only_contributors_to_track_time":true,"enable_issue_dependencies":true},"has_wiki":true,"has_pull_requests":true,"has_projects":true,"projects_mode":"all","has_releases":true,"has_packages":true,"has_actions":true,"ignore_whitespace_conflicts":false,"allow_merge_commits":true,"allow_rebase":true,"allow_rebase_explicit":true,"allow_squash_merge":true,"allow_fast_forward_only_merge":true,"allow_rebase_update":true,"allow_manual_merge":false,"autodetect_manual_merge":false,"default_delete_branch_after_merge":false,"default_merge_style":"merge","default_allow_maintainer_edit":true,"avatar_url":"","internal":false,"mirror_interval":"","object_format_name":"sha1","mirror_updated":"0001-01-01T00:00:00Z","topics":[],"licenses":[]},"pusher":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"sender":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"}}...
|
push
|
2
|
4
|
1788968267
|
1788968357
|
0
|
1788968267
|
1788968357
|
group: governance-${{ github.workflow }}-${{ githu group: governance-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: "true"
...
|
governance-governance.yml-refs/heads/main
|
1
|
Edit
Delete
|
|
23798
|
test: re-verify the workbench UI/UX round together test: re-verify the workbench UI/UX round together with rate limiting...
|
57
|
5
|
governance.yml
|
168
|
5
|
0
|
refs/heads/main
|
8d57841881cc5270b1ef893be3ff0d5b9599cd20
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"9c6389b174f411b411ccacd32f2d6816afeeb337","after":"8d57841881cc5270b1ef893be3ff0d5b9599cd20","compare_url":"https://gitea.g-hi.com/luoanwu/image-generation/compare/9c6389b174f411b411ccacd32f2d6816afeeb337...8d57841881cc5270b1ef893be3ff0d5b9599cd20","commits":[{"id":"8d57841881cc5270b1ef893be3ff0d5b9599cd20","message":"test: re-verify the workbench UI/UX round together with rate limiting\n\nSeven gates and the dependency audit passed again on the tree that\nmerges main (rate-limit round, cc0ce5e4) into this branch, bound to\nsha256:1d2a755beec5a59f51b245d59adbc2ba16d2f6448882247e713eb237e991dd3d; pnpm check passes. Heavy baseline rows re-marked.\nEvidence: acceptance-artifacts/uiux-workbench-2026-09-09/ (round1/ holds\nthe pre-merge run).\n\nCo-Authored-By: Claude Fable 5.1 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/8d57841881cc5270b1ef893be3ff0d5b9599cd20","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-09T08:50:56-07:00","added":[],"removed":[],"modified":["CLAUDE.md","reports/contract-consumers.latest.json","reports/dependency-audit.latest.json","reports/governance-docs.latest.json","reports/governance.latest.json","reports/inference-acceptance.latest.json","reports/material-review-concurrency-guard.latest.json","reports/migrations.latest.json","reports/module-boundary.latest.json","reports/naming.latest.json","reports/order-concurrency-guard.latest.json","reports/production-acceptance.latest.json","reports/production-security.latest.json","reports/public-file-acceptance.latest.json","reports/public-file-integration.latest.json","reports/runtime-acceptance.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/script-acceptance.latest.json","reports/sidecar-tests.latest.json","reports/storyboard-director-guard.latest.json","reports/toolchain.latest.json","reports/ui-acceptance.latest.json","reports/validation-source.latest.json"]},{"id":"7ab708798635a9690f6f989f18c0cae1fb268e35","message":"Merge branch 'main' into feat/uiux-workbench-20260909\n\n# Conflicts:\n#\tCLAUDE.md\n#\treports/contract-consumers.latest.json\n#\treports/dependency-audit.latest.json\n#\treports/governance-docs.latest.json\n#\treports/governance.latest.json\n#\treports/inference-acceptance.latest.json\n#\treports/material-review-concurrency-guard.latest.json\n#\treports/migrations.latest.json\n#\treports/module-boundary.latest.json\n#\treports/naming.latest.json\n#\treports/order-concurrency-guard.latest.json\n#\treports/production-acceptance.latest.json\n#\treports/production-security.latest.json\n#\treports/public-file-acceptance.latest.json\n#\treports/public-file-integration.latest.json\n#\treports/runtime-acceptance.latest.json\n#\treports/runtime-governance.latest.json\n#\treports/schema-sync.latest.json\n#\treports/script-acceptance.latest.json\n#\treports/sidecar-tests.latest.json\n#\treports/storyboard-director-guard.latest.json\n#\treports/toolchain.latest.json\n#\treports/ui-acceptance.latest.json\n#\treports/validation-source.latest.json\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/7ab708798635a9690f6f989f18c0cae1fb268e35","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-09T08:41:48-07:00","added":["apps/api-fastify/src/modules/rate-limit.ts","apps/api-fastify/src/plugins/rate-limit.ts","apps/api-fastify/test/rate-limit.test.ts","apps/api-nestjs/src/rate-limit/rate-limit.module.ts","apps/api-nestjs/src/rate-limit/rate-limit.service.ts","apps/api-nestjs/src/rate-limit/submission-rate-limit.guard.ts","apps/api-nestjs/test/rate-limit.test.ts","apps/web/src/lib/bff-rate-limit.test.mjs","apps/web/src/lib/bff-rate-limit.ts","apps/web/src/lib/server/rate-limit.ts","docs/governance/log/2026-09-09-rate-limit.md","packages/contracts/src/rate-limit-policy.test.ts","packages/contracts/src/rate-limit-policy.ts","reports/admin-brands.desktop.png","reports/admin-brands.mobile.png","reports/creative-history-hidden.desktop.png","reports/creative-history-restore.mobile.png","reports/director-workbench.desktop.png","reports/director-workbench.mobile.png","reports/image-creation-1135.png","reports/image-creation-1440.png","reports/image-creation-390.png","reports/image-creation-768.png","reports/image-edit-1135.png","reports/image-edit-1440.png","reports/image-edit-390.png","reports/image-edit-768.png","reports/image-edit-mobile-form.png","reports/image-edit-result.png","reports/rate-limit-2026-09-09/README.md","reports/rate-limit-2026-09-09/gate-results.round1.jsonl","reports/rate-limit-2026-09-09/gate-results.round2.jsonl","reports/storyboard-asset-dialog.desktop.png","reports/storyboard-asset-dialog.mobile.png","reports/storyboard-frame-dialog.desktop.first.png","reports/storyboard-frame-dialog.desktop.last.png","reports/storyboard-frame-dialog.mobile.first.png","reports/storyboard-frame-dialog.mobile.last.png","reports/storyboard-frame-dialog.mobile.saved.png","reports/template-making.1135.png","reports/template-making.1280.png","reports/template-making.1440.png","reports/template-making.390.png","reports/template-making.768.png","reports/template-preview.edit.png","reports/template-preview.templates.png","reports/template-save-ready.APPLICATION.png","reports/template-save-ready.GENERAL.png","reports/template-save-ready.SCENE.png","reports/template-saved-master.APPLICATION.png","reports/template-saved-master.GENERAL.png","reports/template-saved-master.SCENE.png"],"removed":[],"modified":["CLAUDE.md","apps/api-fastify/src/app.ts","apps/api-fastify/src/routes/creative-project.ts","apps/api-fastify/src/routes/material-factory.ts","apps/api-fastify/src/routes/material-production.ts","apps/api-fastify/src/routes/shijie.ts","apps/api-fastify/src/types.ts","apps/api-nestjs/src/app.module.ts","apps/api-nestjs/src/creative-project/creative-project.controller.ts","apps/api-nestjs/src/material-factory/material-factory.controller.ts","apps/api-nestjs/src/material-factory/shooting-script.controller.ts","apps/api-nestjs/src/material-production/material-production.controller.ts","apps/api-nestjs/src/shijie/shijie.controller.ts","apps/web/src/app/api/[...path]/route.ts","deploy/vm/.env.example","deploy/vm/docker-compose.yml","docs/deploy-vm.md","packages/contracts/src/index.ts","reports/admin-desktop.png","reports/admin-mobile.png","reports/content-detail.brief-desktop.png","reports/content-detail.images-desktop.png","reports/content-detail.output-desktop.png","reports/content-detail.output-mobile.png","reports/content-detail.plans-desktop.png","reports/content-detail.review-desktop.png","reports/contract-consumers.latest.json","reports/creative-quality.desktop.png","reports/dependency-audit.latest.json","reports/governance-docs.latest.json","reports/governance.latest.json","reports/inference-acceptance.latest.json","reports/material-review-concurrency-guard.latest.json","reports/migrations.latest.json","reports/model-api-key-saved.png","reports/model-credential-error.desktop.png","reports/model-credential-error.mobile.png","reports/module-boundary.latest.json","reports/naming.latest.json","reports/order-concurrency-guard.latest.json","reports/prd-retry.mobile.png","reports/prd-review.desktop.png","reports/production-acceptance.latest.json","reports/production-delivery-released.desktop.png","reports/production-delivery-revoked.mobile.png","reports/production-pagination.desktop.png","reports/production-pagination.mobile.png","reports/production-review-preview.desktop.png","reports/production-security.latest.json","reports/production-single-tenant-create.desktop.png","reports/production-single-tenant-separation.desktop.png","reports/public-file-acceptance.latest.json","reports/public-file-integration.latest.json","reports/runtime-acceptance.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/script-acceptance.latest.json","reports/script-generation-queue.png","reports/sidecar-tests.latest.json","reports/storyboard-director-guard.latest.json","reports/template-types.desktop.png","reports/template-types.mobile.png","reports/toolchain.latest.json","reports/ui-acceptance.desktop.png","reports/ui-acceptance.draft-import.png","reports/ui-acceptance.latest.json","reports/ui-acceptance.mobile.png","reports/ui-acceptance.production.png","reports/ui-failure.png","reports/ui-failure.txt","reports/ux-edit.desktop.png","reports/ux-home.desktop.png","reports/ux-home.mobile.png","reports/ux-intake.desktop.png","reports/validation-source.latest.json","reports/video-batch-paused.mobile.png","reports/video-regenerate-2026-09-08/desktop.png","reports/video-regenerate-2026-09-08/mobile.png","scripts/check-production-security.mjs"]},{"id":"02b7a3da9c36632dd84fad950334446c74913b00","message":"Merge branch 'main' into feat/uiux-workbench-20260909\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/02b7a3da9c36632dd84fad950334446c74913b00","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-09T08:36:04-07:00","added":["docs/governance/log/2026-09-09-deep-analysis.md","reports/project-deep-analysis-2026-09-09.md","reports/project-deep-analysis-2026-09-09/README.md"],"removed":[],"modified":["CLAUDE.md","reports/project-deep-analysis.latest.md"]},{"id":"47ae7b7c711428134cc222f3544e4f59c936de4d","message":"test: verify the workbench UI/UX round on an isolated stack\n\nSeven gates (runtime 10 / public-file 10 / inference 6 / script 6 /\nproduction 13 / ui 41 steps + dependency audit) passed on a throwaway\nPostgreSQL/Redis/MinIO stack with the host ClamAV, bound to source\nfingerprint sha256:c416ae79…; pnpm check passes on the same tree. The\neleven heavy baseline rows are re-marked accordingly. Logs and report\ncopies: acceptance-artifacts/uiux-workbench-2026-09-09/.\n\nCo-Authored-By: Claude Fable 5.1 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/47ae7b7c711428134cc222f3544e4f59c936de4d","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-09T08:36:04-07:00","added":[],"removed":[],"modified":["CLAUDE.md","reports/contract-consumers.latest.json","reports/dependency-audit.latest.json","reports/governance-docs.latest.json","reports/governance.latest.json","reports/inference-acceptance.latest.json","reports/material-review-concurrency-guard.latest.json","reports/migrations.latest.json","reports/module-boundary.latest.json","reports/naming.latest.json","reports/order-concurrency-guard.latest.json","reports/production-acceptance.latest.json","reports/production-security.latest.json","reports/public-file-acceptance.latest.json","reports/public-file-integration.latest.json","reports/runtime-acceptance.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/script-acceptance.latest.json","reports/sidecar-tests.latest.json","reports/storyboard-director-guard.latest.json","reports/toolchain.latest.json","reports/ui-acceptance.latest.json","reports/validation-source.latest.json"]},{"id":"39d24383427a77895470147c6670d2a5332dd326","message":"docs: record the workbench UI/UX round and its evidence\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/39d24383427a77895470147c6670d2a5332dd326","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-09T08:28:10-07:00","added":["docs/governance/log/2026-09-09-uiux-workbench.md","reports/uiux-workbench-2026-09-09/README.md","reports/uiux-workbench-2026-09-09/screens/after-desktop-create.jpg","reports/uiux-workbench-2026-09-09/screens/after-desktop-home.jpg","reports/uiux-workbench-2026-09-09/screens/after-mobile-home-full.jpg","reports/uiux-workbench-2026-09-09/screens/before-desktop-home.jpg","reports/uiux-workbench-2026-09-09/screens/before-mobile-home.jpg"],"removed":[],"modified":[]}],"total_commits":0,"head_commit":{"id":"8d57841881cc5270b1ef893be3ff0d5b9599cd20","message":"test: re-verify the workbench UI/UX round together with rate limiting\n\nSeven gates and the dependency audit passed again on the tree that\nmerges main (rate-limit round, cc0ce5e4) into this branch, bound to\nsha256:1d2a755beec5a59f51b245d59adbc2ba16d2f6448882247e713eb237e991dd3d; pnpm check passes. Heavy baseline rows re-marked.\nEvidence: acceptance-artifacts/uiux-workbench-2026-09-09/ (round1/ holds\nthe pre-merge run).\n\nCo-Authored-By: Claude Fable 5.1 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/8d57841881cc5270b1ef893be3ff0d5b9599cd20","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-09T08:50:56-07:00","added":[],"removed":[],"modified":["CLAUDE.md","reports/contract-consumers.latest.json","reports/dependency-audit.latest.json","reports/governance-docs.latest.json","reports/governance.latest.json","reports/inference-acceptance.latest.json","reports/material-review-concurrency-guard.latest.json","reports/migrations.latest.json","reports/module-boundary.latest.json","reports/naming.latest.json","reports/order-concurrency-guard.latest.json","reports/production-acceptance.latest.json","reports/production-security.latest.json","reports/public-file-acceptance.latest.json","reports/public-file-integration.latest.json","reports/runtime-acceptance.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/script-acceptance.latest.json","reports/sidecar-tests.latest.json","reports/storyboard-director-guard.latest.json","reports/toolchain.latest.json","reports/ui-acceptance.latest.json","reports/validation-source.latest.json"]},"repository":{"id":57,"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":"image-generation","full_name":"luoanwu/image-generation","description":"","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":810217,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/image-generation/languages","html_url":"https://gitea.g-hi.com/luoanwu/image-generation","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/image-generation","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/image-generation.git","clone_url":"https://gitea.g-hi.com/luoanwu/image-generation.git","original_url":"","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":8,"open_issues_count":0,"open_pr_counter":1,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-07-06T17:04:22+08:00","updated_at":"2026-09-09T23:37: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":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
|
1788969101
|
1788969192
|
0
|
1788969100
|
1788969192
|
group: governance-${{ github.workflow }}-${{ githu group: governance-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: "true"
...
|
governance-governance.yml-refs/heads/main
|
1
|
Edit
Delete
|
|
23799
|
docs: record the uiux-workbench1 release
|
57
|
5
|
governance.yml
|
169
|
5
|
0
|
refs/heads/main
|
433f9988d44348bc35577d08e7a8bc3e69ad5649
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"8d57841881cc5270b1ef893be3ff0d5b9599cd20","after":"433f9988d44348bc35577d08e7a8bc3e69ad5649","compare_url":"https://gitea.g-hi.com/luoanwu/image-generation/compare/8d57841881cc5270b1ef893be3ff0d5b9599cd20...433f9988d44348bc35577d08e7a8bc3e69ad5649","commits":[{"id":"433f9988d44348bc35577d08e7a8bc3e69ad5649","message":"docs: record the uiux-workbench1 release\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/433f9988d44348bc35577d08e7a8bc3e69ad5649","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-09T09:04:24-07:00","added":["docs/releases/2026-09-09-uiux-workbench1.md"],"removed":[],"modified":["docs/governance/log/2026-09-09-uiux-workbench.md","docs/releases/current.md"]}],"total_commits":0,"head_commit":{"id":"433f9988d44348bc35577d08e7a8bc3e69ad5649","message":"docs: record the uiux-workbench1 release\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/433f9988d44348bc35577d08e7a8bc3e69ad5649","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-09T09:04:24-07:00","added":["docs/releases/2026-09-09-uiux-workbench1.md"],"removed":[],"modified":["docs/governance/log/2026-09-09-uiux-workbench.md","docs/releases/current.md"]},"repository":{"id":57,"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":"image-generation","full_name":"luoanwu/image-generation","description":"","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":810765,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/image-generation/languages","html_url":"https://gitea.g-hi.com/luoanwu/image-generation","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/image-generation","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/image-generation.git","clone_url":"https://gitea.g-hi.com/luoanwu/image-generation.git","original_url":"","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":8,"open_issues_count":0,"open_pr_counter":1,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-07-06T17:04:22+08:00","updated_at":"2026-09-09T23:51:40+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
|
1788969870
|
1788969993
|
0
|
1788969870
|
1788969993
|
group: governance-${{ github.workflow }}-${{ githu group: governance-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: "true"
...
|
governance-governance.yml-refs/heads/main
|
1
|
Edit
Delete
|
|
23800
|
docs(governance): re-green heavy baseline rows for docs(governance): re-green heavy baseline rows for creative cost recording at 3f6aec2e...
|
57
|
5
|
governance.yml
|
170
|
5
|
0
|
refs/heads/main
|
aebdbb01335820f411351274120577f5ac279bfa
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"433f9988d44348bc35577d08e7a8bc3e69ad5649","after":"aebdbb01335820f411351274120577f5ac279bfa","compare_url":"https://gitea.g-hi.com/luoanwu/image-generation/compare/433f9988d44348bc35577d08e7a8bc3e69ad5649...aebdbb01335820f411351274120577f5ac279bfa","commits":[{"id":"aebdbb01335820f411351274120577f5ac279bfa","message":"docs(governance): re-green heavy baseline rows for creative cost recording at 3f6aec2e\n\nSeven isolated gates passed; evidence in reports/model-cost-creative-2026-09-09.\nG33 rate limiting recorded as deployed with release-20260909-uiux-workbench1.\n\nCo-Authored-By: Claude Fable 5.1 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/aebdbb01335820f411351274120577f5ac279bfa","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-09T16:05:13-07:00","added":["reports/model-cost-creative-2026-09-09/README.md","reports/model-cost-creative-2026-09-09/gate-results.jsonl"],"removed":[],"modified":["CLAUDE.md","docs/governance/log/2026-09-09-model-cost-creative.md","reports/admin-brands.desktop.png","reports/admin-brands.mobile.png","reports/admin-mobile.png","reports/content-detail.brief-desktop.png","reports/content-detail.images-desktop.png","reports/content-detail.output-desktop.png","reports/content-detail.output-mobile.png","reports/content-detail.plans-desktop.png","reports/content-detail.review-desktop.png","reports/contract-consumers.latest.json","reports/creative-history-hidden.desktop.png","reports/creative-history-restore.mobile.png","reports/creative-quality.desktop.png","reports/dependency-audit.latest.json","reports/director-workbench.desktop.png","reports/director-workbench.mobile.png","reports/governance-docs.latest.json","reports/governance.latest.json","reports/image-creation-1135.png","reports/image-creation-1440.png","reports/image-creation-390.png","reports/image-creation-768.png","reports/image-edit-1135.png","reports/image-edit-1440.png","reports/image-edit-390.png","reports/image-edit-768.png","reports/image-edit-mobile-form.png","reports/image-edit-result.png","reports/inference-acceptance.latest.json","reports/material-review-concurrency-guard.latest.json","reports/migrations.latest.json","reports/model-api-key-saved.png","reports/model-credential-error.desktop.png","reports/model-credential-error.mobile.png","reports/module-boundary.latest.json","reports/naming.latest.json","reports/order-concurrency-guard.latest.json","reports/prd-retry.mobile.png","reports/prd-review.desktop.png","reports/production-acceptance.latest.json","reports/production-delivery-released.desktop.png","reports/production-delivery-revoked.mobile.png","reports/production-pagination.desktop.png","reports/production-pagination.mobile.png","reports/production-review-preview.desktop.png","reports/production-security.latest.json","reports/production-single-tenant-create.desktop.png","reports/production-single-tenant-separation.desktop.png","reports/public-file-acceptance.latest.json","reports/public-file-integration.latest.json","reports/runtime-acceptance.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/script-acceptance.latest.json","reports/script-generation-queue.png","reports/sidecar-tests.latest.json","reports/storyboard-asset-dialog.desktop.png","reports/storyboard-asset-dialog.mobile.png","reports/storyboard-director-guard.latest.json","reports/storyboard-frame-dialog.desktop.first.png","reports/storyboard-frame-dialog.desktop.last.png","reports/storyboard-frame-dialog.mobile.first.png","reports/storyboard-frame-dialog.mobile.last.png","reports/storyboard-frame-dialog.mobile.saved.png","reports/template-making.1135.png","reports/template-making.1280.png","reports/template-making.1440.png","reports/template-making.390.png","reports/template-making.768.png","reports/template-preview.edit.png","reports/template-preview.templates.png","reports/template-save-ready.APPLICATION.png","reports/template-save-ready.GENERAL.png","reports/template-save-ready.SCENE.png","reports/template-saved-master.APPLICATION.png","reports/template-saved-master.GENERAL.png","reports/template-saved-master.SCENE.png","reports/template-types.desktop.png","reports/template-types.mobile.png","reports/toolchain.latest.json","reports/ui-acceptance.desktop.png","reports/ui-acceptance.draft-import.png","reports/ui-acceptance.latest.json","reports/ui-acceptance.mobile.png","reports/ui-acceptance.production.png","reports/ux-edit.desktop.png","reports/ux-home.desktop.png","reports/ux-home.mobile.png","reports/ux-intake.desktop.png","reports/validation-source.latest.json","reports/video-batch-paused.mobile.png","reports/video-regenerate-2026-09-08/desktop.png","reports/video-regenerate-2026-09-08/mobile.png"]},{"id":"ea5d91fd71a69a1628c9762d3ff59565d3916342","message":"docs(governance): mark heavy baseline rows pending for creative cost recording\n\nCo-Authored-By: Claude Fable 5.1 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/ea5d91fd71a69a1628c9762d3ff59565d3916342","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-09T15:57:01-07:00","added":[],"removed":[],"modified":["CLAUDE.md","reports/contract-consumers.latest.json","reports/governance-docs.latest.json","reports/governance.latest.json","reports/material-review-concurrency-guard.latest.json","reports/migrations.latest.json","reports/module-boundary.latest.json","reports/naming.latest.json","reports/order-concurrency-guard.latest.json","reports/production-security.latest.json","reports/public-file-integration.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/storyboard-director-guard.latest.json","reports/toolchain.latest.json","reports/validation-source.latest.json"]},{"id":"a4993895e7ff3741cd0a9419448627d6b2f79523","message":"merge: bring rate limiting and re-greened baseline into cost-creative branch; mark heavy rows pending\n\nCo-Authored-By: Claude Fable 5.1 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/a4993895e7ff3741cd0a9419448627d6b2f79523","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-09T15:56:14-07:00","added":[],"removed":[],"modified":["reports/contract-consumers.latest.json","reports/governance-docs.latest.json","reports/governance.latest.json","reports/material-review-concurrency-guard.latest.json","reports/migrations.latest.json","reports/module-boundary.latest.json","reports/naming.latest.json","reports/order-concurrency-guard.latest.json","reports/production-security.latest.json","reports/public-file-integration.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/storyboard-director-guard.latest.json","reports/toolchain.latest.json","reports/validation-source.latest.json"]},{"id":"9c2e799cbb30d263dee5f051d264df01f9288e9b","message":"Merge branch 'main' into feat/model-cost-creative-20260909\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/9c2e799cbb30d263dee5f051d264df01f9288e9b","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-09T15:55:29-07:00","added":["apps/api-fastify/src/modules/rate-limit.ts","apps/api-fastify/src/plugins/rate-limit.ts","apps/api-fastify/test/rate-limit.test.ts","apps/api-nestjs/src/rate-limit/rate-limit.module.ts","apps/api-nestjs/src/rate-limit/rate-limit.service.ts","apps/api-nestjs/src/rate-limit/submission-rate-limit.guard.ts","apps/api-nestjs/test/rate-limit.test.ts","apps/web/src/lib/bff-rate-limit.test.mjs","apps/web/src/lib/bff-rate-limit.ts","apps/web/src/lib/server/rate-limit.ts","docs/governance/log/2026-09-09-deep-analysis.md","docs/governance/log/2026-09-09-rate-limit.md","docs/governance/log/2026-09-09-uiux-workbench.md","docs/releases/2026-09-09-template-current1.md","docs/releases/2026-09-09-uiux-workbench1.md","packages/contracts/src/rate-limit-policy.test.ts","packages/contracts/src/rate-limit-policy.ts","reports/admin-brands.desktop.png","reports/admin-brands.mobile.png","reports/creative-history-hidden.desktop.png","reports/creative-history-restore.mobile.png","reports/director-workbench.desktop.png","reports/director-workbench.mobile.png","reports/image-creation-1135.png","reports/image-creation-1440.png","reports/image-creation-390.png","reports/image-creation-768.png","reports/image-edit-1135.png","reports/image-edit-1440.png","reports/image-edit-390.png","reports/image-edit-768.png","reports/image-edit-mobile-form.png","reports/image-edit-result.png","reports/project-deep-analysis-2026-09-09.md","reports/project-deep-analysis-2026-09-09/README.md","reports/rate-limit-2026-09-09/README.md","reports/rate-limit-2026-09-09/gate-results.round1.jsonl","reports/rate-limit-2026-09-09/gate-results.round2.jsonl","reports/storyboard-asset-dialog.desktop.png","reports/storyboard-asset-dialog.mobile.png","reports/storyboard-frame-dialog.desktop.first.png","reports/storyboard-frame-dialog.desktop.last.png","reports/storyboard-frame-dialog.mobile.first.png","reports/storyboard-frame-dialog.mobile.last.png","reports/storyboard-frame-dialog.mobile.saved.png","reports/template-making.1135.png","reports/template-making.1280.png","reports/template-making.1440.png","reports/template-making.390.png","reports/template-making.768.png","reports/template-preview.edit.png","reports/template-preview.templates.png","reports/template-save-ready.APPLICATION.png","reports/template-save-ready.GENERAL.png","reports/template-save-ready.SCENE.png","reports/template-saved-master.APPLICATION.png","reports/template-saved-master.GENERAL.png","reports/template-saved-master.SCENE.png","reports/uiux-workbench-2026-09-09/README.md","reports/uiux-workbench-2026-09-09/screens/after-desktop-create.jpg","reports/uiux-workbench-2026-09-09/screens/after-desktop-home.jpg","reports/uiux-workbench-2026-09-09/screens/after-mobile-home-full.jpg","reports/uiux-workbench-2026-09-09/screens/before-desktop-home.jpg","reports/uiux-workbench-2026-09-09/screens/before-mobile-home.jpg"],"removed":[],"modified":["CLAUDE.md","apps/api-fastify/src/app.ts","apps/api-fastify/src/routes/creative-project.ts","apps/api-fastify/src/routes/material-factory.ts","apps/api-fastify/src/routes/material-production.ts","apps/api-fastify/src/routes/shijie.ts","apps/api-fastify/src/types.ts","apps/api-nestjs/src/app.module.ts","apps/api-nestjs/src/creative-project/creative-project.controller.ts","apps/api-nestjs/src/material-factory/material-factory.controller.ts","apps/api-nestjs/src/material-factory/shooting-script.controller.ts","apps/api-nestjs/src/material-production/material-production.controller.ts","apps/api-nestjs/src/shijie/shijie.controller.ts","apps/web/src/app/api/[...path]/route.ts","apps/web/src/components/material-factory/CreateStudio.tsx","apps/web/src/components/material-factory/CreativeProjectBar.tsx","apps/web/src/components/material-factory/FactoryShell.tsx","apps/web/src/components/material-factory/WorkspaceHome.tsx","apps/web/src/components/material-factory/creative-project-queries.ts","apps/web/src/components/material-factory/factory-shell.module.css","apps/web/src/components/material-factory/workspace-home.module.css","apps/web/src/store/useCreationPrefsStore.ts","deploy/vm/.env.example","deploy/vm/docker-compose.yml","docs/deploy-vm.md","docs/governance/log/2026-09-09-template-current.md","docs/releases/current.md","packages/contracts/src/index.ts","reports/admin-desktop.png","reports/admin-mobile.png","reports/content-detail.brief-desktop.png","reports/content-detail.images-desktop.png","reports/content-detail.output-desktop.png","reports/content-detail.output-mobile.png","reports/content-detail.plans-desktop.png","reports/content-detail.review-desktop.png","reports/contract-consumers.latest.json","reports/creative-quality.desktop.png","reports/dependency-audit.latest.json","reports/governance-docs.latest.json","reports/governance.latest.json","reports/inference-acceptance.latest.json","reports/material-review-concurrency-guard.latest.json","reports/migrations.latest.json","reports/model-api-key-saved.png","reports/model-credential-error.desktop.png","reports/model-credential-error.mobile.png","reports/module-boundary.latest.json","reports/naming.latest.json","reports/order-concurrency-guard.latest.json","reports/prd-retry.mobile.png","reports/prd-review.desktop.png","reports/production-acceptance.latest.json","reports/production-delivery-released.desktop.png","reports/production-delivery-revoked.mobile.png","reports/production-pagination.desktop.png","reports/production-pagination.mobile.png","reports/production-review-preview.desktop.png","reports/production-security.latest.json","reports/production-single-tenant-create.desktop.png","reports/production-single-tenant-separation.desktop.png","reports/project-deep-analysis.latest.md","reports/public-file-acceptance.latest.json","reports/public-file-integration.latest.json","reports/runtime-acceptance.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/script-acceptance.latest.json","reports/script-generation-queue.png","reports/sidecar-tests.latest.json","reports/storyboard-director-guard.latest.json","reports/template-current-20260909/README.md","reports/template-types.desktop.png","reports/template-types.mobile.png","reports/toolchain.latest.json","reports/ui-acceptance.desktop.png","reports/ui-acceptance.draft-import.png","reports/ui-acceptance.latest.json","reports/ui-acceptance.mobile.png","reports/ui-acceptance.production.png","reports/ui-failure.png","reports/ui-failure.txt","reports/ux-edit.desktop.png","reports/ux-home.desktop.png","reports/ux-home.mobile.png","reports/ux-intake.desktop.png","reports/validation-source.latest.json","reports/video-batch-paused.mobile.png","reports/video-regenerate-2026-09-08/desktop.png","reports/video-regenerate-2026-09-08/mobile.png","scripts/check-production-security.mjs"]},{"id":"0171446fbd9618797c64123a8d486786a3a343ff","message":"feat: record model cost for creative queue and storyboard video (G32)\n\nExtend the 2026-09-08 catalog-price cost mechanism from formal renders to\nthe creative queue and the storyboard video path so every hosted model\ncall leaves a ModelInvocation row with ESTIMATED / UNKNOWN / NOT_BILLED\nsemantics, no schema change.\n\n- contracts: plannedModelCost / modelCostLimitBlock /\n modelInvocationFailureBilling / modelCostEvidence /\n MODEL_INVOCATION_SUBJECTS, isExternalModelEngine, optional\n cost.bySubject in productionCostMetricsSchema; no new prices added\n (no sourced list price exists in the repo for Qwen / MiniMax /\n Seedance / DeepSeek, they stay UNKNOWN)\n- both backends: AsyncLocalStorage model-invocation context wrapped\n around sidecar generate/edit/script/storyboard/shijie/draft/semantic\n calls and the direct LLM connector; creative runNext installs the\n recorder, blocks before dispatch on the brand route policy limit\n (MODEL_COST_LIMIT_EXCEEDED / _ZERO) with the request never leaving\n the host, marks RUNNING rows UNKNOWN on lease expiry in the same\n claim transaction; storyboard video opens a RUNNING row when the\n sidecar accepts the task and closes it on poll with provider usage;\n /metrics.cost gains CREATIVE_OPERATION / STORYBOARD_VIDEO slices\n- tests: contracts model-price (+5), creative-model-cost (9 each\n backend) and storyboard-video-cost (3 each backend) on a real\n PostgreSQL with a synthetic sidecar; connector tests updated for the\n usage field\n- governance: log 2026-09-09-model-cost-creative.md, CLAUDE.md G32 row\n\nCo-Authored-By: Claude Fable 5.1 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/0171446fbd9618797c64123a8d486786a3a343ff","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-09T08:21:09-07:00","added":["apps/api-fastify/src/modules/creative-project/creative-model-invocations.ts","apps/api-fastify/src/modules/material-factory/model-invocation-context.ts","apps/api-fastify/src/modules/material-factory/storyboard-video-invocations.ts","apps/api-fastify/test/creative-model-cost.integration.test.ts","apps/api-fastify/test/storyboard-video-cost.integration.test.ts","apps/api-nestjs/src/creative-project/creative-model-invocations.ts","apps/api-nestjs/src/material-factory/model-invocation-context.ts","apps/api-nestjs/src/material-factory/storyboard-video-invocations.ts","apps/api-nestjs/test/creative-model-cost.integration.test.ts","apps/api-nestjs/test/storyboard-video-cost.integration.test.ts","docs/governance/log/2026-09-09-model-cost-creative.md"],"removed":[],"modified":["CLAUDE.md","apps/api-fastify/src/modules/creative-project/creative-project.service.ts","apps/api-fastify/src/modules/material-factory/material-factory.service.ts","apps/api-fastify/src/modules/material-factory/material-sidecar.client.ts","apps/api-fastify/src/modules/material-factory/model-connector.client.ts","apps/api-fastify/src/modules/material-production/material-production.service.ts","apps/api-fastify/test/model-connector.client.test.ts","apps/api-nestjs/src/creative-project/creative-project.service.ts","apps/api-nestjs/src/material-factory/material-factory.service.ts","apps/api-nestjs/src/material-factory/material-sidecar.client.ts","apps/api-nestjs/src/material-factory/model-connector.client.ts","apps/api-nestjs/src/material-production/material-production.service.ts","apps/api-nestjs/test/model-connector.client.test.ts","packages/contracts/src/material.ts","packages/contracts/src/model-price.test.ts","packages/contracts/src/model-price.ts","packages/contracts/src/production.ts"]}],"total_commits":0,"head_commit":{"id":"aebdbb01335820f411351274120577f5ac279bfa","message":"docs(governance): re-green heavy baseline rows for creative cost recording at 3f6aec2e\n\nSeven isolated gates passed; evidence in reports/model-cost-creative-2026-09-09.\nG33 rate limiting recorded as deployed with release-20260909-uiux-workbench1.\n\nCo-Authored-By: Claude Fable 5.1 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/aebdbb01335820f411351274120577f5ac279bfa","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-09T16:05:13-07:00","added":["reports/model-cost-creative-2026-09-09/README.md","reports/model-cost-creative-2026-09-09/gate-results.jsonl"],"removed":[],"modified":["CLAUDE.md","docs/governance/log/2026-09-09-model-cost-creative.md","reports/admin-brands.desktop.png","reports/admin-brands.mobile.png","reports/admin-mobile.png","reports/content-detail.brief-desktop.png","reports/content-detail.images-desktop.png","reports/content-detail.output-desktop.png","reports/content-detail.output-mobile.png","reports/content-detail.plans-desktop.png","reports/content-detail.review-desktop.png","reports/contract-consumers.latest.json","reports/creative-history-hidden.desktop.png","reports/creative-history-restore.mobile.png","reports/creative-quality.desktop.png","reports/dependency-audit.latest.json","reports/director-workbench.desktop.png","reports/director-workbench.mobile.png","reports/governance-docs.latest.json","reports/governance.latest.json","reports/image-creation-1135.png","reports/image-creation-1440.png","reports/image-creation-390.png","reports/image-creation-768.png","reports/image-edit-1135.png","reports/image-edit-1440.png","reports/image-edit-390.png","reports/image-edit-768.png","reports/image-edit-mobile-form.png","reports/image-edit-result.png","reports/inference-acceptance.latest.json","reports/material-review-concurrency-guard.latest.json","reports/migrations.latest.json","reports/model-api-key-saved.png","reports/model-credential-error.desktop.png","reports/model-credential-error.mobile.png","reports/module-boundary.latest.json","reports/naming.latest.json","reports/order-concurrency-guard.latest.json","reports/prd-retry.mobile.png","reports/prd-review.desktop.png","reports/production-acceptance.latest.json","reports/production-delivery-released.desktop.png","reports/production-delivery-revoked.mobile.png","reports/production-pagination.desktop.png","reports/production-pagination.mobile.png","reports/production-review-preview.desktop.png","reports/production-security.latest.json","reports/production-single-tenant-create.desktop.png","reports/production-single-tenant-separation.desktop.png","reports/public-file-acceptance.latest.json","reports/public-file-integration.latest.json","reports/runtime-acceptance.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/script-acceptance.latest.json","reports/script-generation-queue.png","reports/sidecar-tests.latest.json","reports/storyboard-asset-dialog.desktop.png","reports/storyboard-asset-dialog.mobile.png","reports/storyboard-director-guard.latest.json","reports/storyboard-frame-dialog.desktop.first.png","reports/storyboard-frame-dialog.desktop.last.png","reports/storyboard-frame-dialog.mobile.first.png","reports/storyboard-frame-dialog.mobile.last.png","reports/storyboard-frame-dialog.mobile.saved.png","reports/template-making.1135.png","reports/template-making.1280.png","reports/template-making.1440.png","reports/template-making.390.png","reports/template-making.768.png","reports/template-preview.edit.png","reports/template-preview.templates.png","reports/template-save-ready.APPLICATION.png","reports/template-save-ready.GENERAL.png","reports/template-save-ready.SCENE.png","reports/template-saved-master.APPLICATION.png","reports/template-saved-master.GENERAL.png","reports/template-saved-master.SCENE.png","reports/template-types.desktop.png","reports/template-types.mobile.png","reports/toolchain.latest.json","reports/ui-acceptance.desktop.png","reports/ui-acceptance.draft-import.png","reports/ui-acceptance.latest.json","reports/ui-acceptance.mobile.png","reports/ui-acceptance.production.png","reports/ux-edit.desktop.png","reports/ux-home.desktop.png","reports/ux-home.mobile.png","reports/ux-intake.desktop.png","reports/validation-source.latest.json","reports/video-batch-paused.mobile.png","reports/video-regenerate-2026-09-08/desktop.png","reports/video-regenerate-2026-09-08/mobile.png"]},"repository":{"id":57,"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":"image-generation","full_name":"luoanwu/image-generation","description":"","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":810777,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/image-generation/languages","html_url":"https://gitea.g-hi.com/luoanwu/image-generation","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/image-generation","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/image-generation.git","clone_url":"https://gitea.g-hi.com/luoanwu/image-generation.git","original_url":"","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":8,"open_issues_count":0,"open_pr_counter":1,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-07-06T17:04:22+08:00","updated_at":"2026-09-10T00:04:30+08:00","archived_at":"1970-01-01T08:00:00+08:00","permissions":{"admin":true,"push":true,"pull":true},"has_code":true,"has_issues":true,"internal_tracker":{"enable_time_tracker":true,"allow_only_contributors_to_track_time":true,"enable_issue_dependencies":true},"has_wiki":true,"has_pull_requests":true,"has_projects":true,"projects_mode":"all","has_releases":true,"has_packages":true,"has_actions":true,"ignore_whitespace_conflicts":false,"allow_merge_commits":true,"allow_rebase":true,"allow_rebase_explicit":true,"allow_squash_merge":true,"allow_fast_forward_only_merge":true,"allow_rebase_update":true,"allow_manual_merge":false,"autodetect_manual_merge":false,"default_delete_branch_after_merge":false,"default_merge_style":"merge","default_allow_maintainer_edit":true,"avatar_url":"","internal":false,"mirror_interval":"","object_format_name":"sha1","mirror_updated":"0001-01-01T00:00:00Z","topics":[],"licenses":[]},"pusher":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"sender":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"}}...
|
push
|
2
|
4
|
1788995260
|
1788995350
|
0
|
1788995258
|
1788995350
|
group: governance-${{ github.workflow }}-${{ githu group: governance-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: "true"
...
|
governance-governance.yml-refs/heads/main
|
1
|
Edit
Delete
|
|
23801
|
docs: record the cost-creative1 release and verifi docs: record the cost-creative1 release and verification boundary...
|
57
|
5
|
governance.yml
|
171
|
5
|
0
|
refs/heads/main
|
512495bfbdfe273b64932d586e99426d42c1bc42
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"aebdbb01335820f411351274120577f5ac279bfa","after":"512495bfbdfe273b64932d586e99426d42c1bc42","compare_url":"https://gitea.g-hi.com/luoanwu/image-generation/compare/aebdbb01335820f411351274120577f5ac279bfa...512495bfbdfe273b64932d586e99426d42c1bc42","commits":[{"id":"512495bfbdfe273b64932d586e99426d42c1bc42","message":"docs: record the cost-creative1 release and verification boundary\n\nCo-Authored-By: Claude Fable 5.1 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/512495bfbdfe273b64932d586e99426d42c1bc42","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-09T16:19:54-07:00","added":["docs/releases/2026-09-09-cost-creative1.md"],"removed":[],"modified":["CLAUDE.md","docs/releases/current.md","reports/contract-consumers.latest.json","reports/governance-docs.latest.json","reports/governance.latest.json","reports/material-review-concurrency-guard.latest.json","reports/migrations.latest.json","reports/module-boundary.latest.json","reports/naming.latest.json","reports/order-concurrency-guard.latest.json","reports/production-security.latest.json","reports/public-file-integration.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/storyboard-director-guard.latest.json","reports/toolchain.latest.json","reports/validation-source.latest.json"]}],"total_commits":0,"head_commit":{"id":"512495bfbdfe273b64932d586e99426d42c1bc42","message":"docs: record the cost-creative1 release and verification boundary\n\nCo-Authored-By: Claude Fable 5.1 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/512495bfbdfe273b64932d586e99426d42c1bc42","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-09T16:19:54-07:00","added":["docs/releases/2026-09-09-cost-creative1.md"],"removed":[],"modified":["CLAUDE.md","docs/releases/current.md","reports/contract-consumers.latest.json","reports/governance-docs.latest.json","reports/governance.latest.json","reports/material-review-concurrency-guard.latest.json","reports/migrations.latest.json","reports/module-boundary.latest.json","reports/naming.latest.json","reports/order-concurrency-guard.latest.json","reports/production-security.latest.json","reports/public-file-integration.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/storyboard-director-guard.latest.json","reports/toolchain.latest.json","reports/validation-source.latest.json"]},"repository":{"id":57,"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":"image-generation","full_name":"luoanwu/image-generation","description":"","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":826000,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/image-generation/languages","html_url":"https://gitea.g-hi.com/luoanwu/image-generation","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/image-generation","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/image-generation.git","clone_url":"https://gitea.g-hi.com/luoanwu/image-generation.git","original_url":"","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":8,"open_issues_count":0,"open_pr_counter":1,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-07-06T17:04:22+08:00","updated_at":"2026-09-10T07:07:38+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
|
1788996010
|
1788996052
|
0
|
1788996009
|
1788996052
|
group: governance-${{ github.workflow }}-${{ githu group: governance-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: "true"
...
|
governance-governance.yml-refs/heads/main
|
1
|
Edit
Delete
|
|
23802
|
Merge branch 'main' into feat/uiux-workben Merge branch 'main' into feat/uiux-workbench-20260909...
|
57
|
5
|
governance.yml
|
172
|
5
|
0
|
refs/heads/main
|
1a7c5f29eaf4aa40626df8e70173d624f758ccff
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"512495bfbdfe273b64932d586e99426d42c1bc42","after":"1a7c5f29eaf4aa40626df8e70173d624f758ccff","compare_url":"https://gitea.g-hi.com/luoanwu/image-generation/compare/512495bfbdfe273b64932d586e99426d42c1bc42...1a7c5f29eaf4aa40626df8e70173d624f758ccff","commits":[{"id":"1a7c5f29eaf4aa40626df8e70173d624f758ccff","message":"Merge branch 'main' into feat/uiux-workbench-20260909\n\n# Conflicts:\n#\treports/contract-consumers.latest.json\n#\treports/governance-docs.latest.json\n#\treports/governance.latest.json\n#\treports/material-review-concurrency-guard.latest.json\n#\treports/migrations.latest.json\n#\treports/module-boundary.latest.json\n#\treports/naming.latest.json\n#\treports/order-concurrency-guard.latest.json\n#\treports/production-security.latest.json\n#\treports/public-file-integration.latest.json\n#\treports/runtime-governance.latest.json\n#\treports/schema-sync.latest.json\n#\treports/storyboard-director-guard.latest.json\n#\treports/toolchain.latest.json\n#\treports/validation-source.latest.json\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/1a7c5f29eaf4aa40626df8e70173d624f758ccff","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-09T16:25:52-07:00","added":["docs/releases/2026-09-09-cost-creative1.md"],"removed":[],"modified":["CLAUDE.md","docs/releases/current.md"]},{"id":"d56a94d6c903cbfa4d0dbabcfd372a941ae8cd0e","message":"test: verify the image-creation UI/UX round with creative cost recording\n\nSeven gates and the dependency audit passed on the tree that merges\nmain (creative cost recording round, 3f6aec2e) into this branch, bound\nto sha256:ba22950d7b77cfccd6e5bc09bc0f103d7bccb7afe022f0f50a51e064c518f8e6; pnpm check passes. Heavy baseline rows re-marked. A pre-merge\nrun of the same gates on eff5a2ce also passed\n(acceptance-artifacts/uiux-workbench-2026-09-09/round3-premerge/).\n\nCo-Authored-By: Claude Fable 5.1 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/d56a94d6c903cbfa4d0dbabcfd372a941ae8cd0e","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-09T16:24:32-07:00","added":[],"removed":[],"modified":["CLAUDE.md","reports/contract-consumers.latest.json","reports/dependency-audit.latest.json","reports/governance-docs.latest.json","reports/governance.latest.json","reports/inference-acceptance.latest.json","reports/material-review-concurrency-guard.latest.json","reports/migrations.latest.json","reports/module-boundary.latest.json","reports/naming.latest.json","reports/order-concurrency-guard.latest.json","reports/production-acceptance.latest.json","reports/production-security.latest.json","reports/public-file-acceptance.latest.json","reports/public-file-integration.latest.json","reports/runtime-acceptance.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/script-acceptance.latest.json","reports/sidecar-tests.latest.json","reports/storyboard-director-guard.latest.json","reports/toolchain.latest.json","reports/ui-acceptance.latest.json","reports/validation-source.latest.json"]},{"id":"681df4d16f9a58a0b552961f5e3b354d2c392760","message":"Merge branch 'main' into feat/uiux-workbench-20260909\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/681df4d16f9a58a0b552961f5e3b354d2c392760","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-09T16:15:39-07:00","added":["apps/api-fastify/src/modules/creative-project/creative-model-invocations.ts","apps/api-fastify/src/modules/material-factory/model-invocation-context.ts","apps/api-fastify/src/modules/material-factory/storyboard-video-invocations.ts","apps/api-fastify/test/creative-model-cost.integration.test.ts","apps/api-fastify/test/storyboard-video-cost.integration.test.ts","apps/api-nestjs/src/creative-project/creative-model-invocations.ts","apps/api-nestjs/src/material-factory/model-invocation-context.ts","apps/api-nestjs/src/material-factory/storyboard-video-invocations.ts","apps/api-nestjs/test/creative-model-cost.integration.test.ts","apps/api-nestjs/test/storyboard-video-cost.integration.test.ts","docs/governance/log/2026-09-09-model-cost-creative.md","reports/model-cost-creative-2026-09-09/README.md","reports/model-cost-creative-2026-09-09/gate-results.jsonl"],"removed":[],"modified":["CLAUDE.md","apps/api-fastify/src/modules/creative-project/creative-project.service.ts","apps/api-fastify/src/modules/material-factory/material-factory.service.ts","apps/api-fastify/src/modules/material-factory/material-sidecar.client.ts","apps/api-fastify/src/modules/material-factory/model-connector.client.ts","apps/api-fastify/src/modules/material-production/material-production.service.ts","apps/api-fastify/test/model-connector.client.test.ts","apps/api-nestjs/src/creative-project/creative-project.service.ts","apps/api-nestjs/src/material-factory/material-factory.service.ts","apps/api-nestjs/src/material-factory/material-sidecar.client.ts","apps/api-nestjs/src/material-factory/model-connector.client.ts","apps/api-nestjs/src/material-production/material-production.service.ts","apps/api-nestjs/test/model-connector.client.test.ts","packages/contracts/src/material.ts","packages/contracts/src/model-price.test.ts","packages/contracts/src/model-price.ts","packages/contracts/src/production.ts","reports/admin-brands.desktop.png","reports/admin-brands.mobile.png","reports/admin-mobile.png","reports/content-detail.brief-desktop.png","reports/content-detail.images-desktop.png","reports/content-detail.output-desktop.png","reports/content-detail.output-mobile.png","reports/content-detail.plans-desktop.png","reports/content-detail.review-desktop.png","reports/contract-consumers.latest.json","reports/creative-history-hidden.desktop.png","reports/creative-history-restore.mobile.png","reports/creative-quality.desktop.png","reports/dependency-audit.latest.json","reports/director-workbench.desktop.png","reports/director-workbench.mobile.png","reports/governance-docs.latest.json","reports/governance.latest.json","reports/image-creation-1135.png","reports/image-creation-1440.png","reports/image-creation-390.png","reports/image-creation-768.png","reports/image-edit-1135.png","reports/image-edit-1440.png","reports/image-edit-390.png","reports/image-edit-768.png","reports/image-edit-mobile-form.png","reports/image-edit-result.png","reports/inference-acceptance.latest.json","reports/material-review-concurrency-guard.latest.json","reports/migrations.latest.json","reports/model-api-key-saved.png","reports/model-credential-error.desktop.png","reports/model-credential-error.mobile.png","reports/module-boundary.latest.json","reports/naming.latest.json","reports/order-concurrency-guard.latest.json","reports/prd-retry.mobile.png","reports/prd-review.desktop.png","reports/production-acceptance.latest.json","reports/production-delivery-released.desktop.png","reports/production-delivery-revoked.mobile.png","reports/production-pagination.desktop.png","reports/production-pagination.mobile.png","reports/production-review-preview.desktop.png","reports/production-security.latest.json","reports/production-single-tenant-create.desktop.png","reports/production-single-tenant-separation.desktop.png","reports/public-file-acceptance.latest.json","reports/public-file-integration.latest.json","reports/runtime-acceptance.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/script-acceptance.latest.json","reports/script-generation-queue.png","reports/sidecar-tests.latest.json","reports/storyboard-asset-dialog.desktop.png","reports/storyboard-asset-dialog.mobile.png","reports/storyboard-director-guard.latest.json","reports/storyboard-frame-dialog.desktop.first.png","reports/storyboard-frame-dialog.desktop.last.png","reports/storyboard-frame-dialog.mobile.first.png","reports/storyboard-frame-dialog.mobile.last.png","reports/storyboard-frame-dialog.mobile.saved.png","reports/template-making.1135.png","reports/template-making.1280.png","reports/template-making.1440.png","reports/template-making.390.png","reports/template-making.768.png","reports/template-preview.edit.png","reports/template-preview.templates.png","reports/template-save-ready.APPLICATION.png","reports/template-save-ready.GENERAL.png","reports/template-save-ready.SCENE.png","reports/template-saved-master.APPLICATION.png","reports/template-saved-master.GENERAL.png","reports/template-saved-master.SCENE.png","reports/template-types.desktop.png","reports/template-types.mobile.png","reports/toolchain.latest.json","reports/ui-acceptance.desktop.png","reports/ui-acceptance.draft-import.png","reports/ui-acceptance.latest.json","reports/ui-acceptance.mobile.png","reports/ui-acceptance.production.png","reports/ux-edit.desktop.png","reports/ux-home.desktop.png","reports/ux-home.mobile.png","reports/ux-intake.desktop.png","reports/validation-source.latest.json","reports/video-batch-paused.mobile.png","reports/video-regenerate-2026-09-08/desktop.png","reports/video-regenerate-2026-09-08/mobile.png"]},{"id":"5d8b4f3f71d20fe89b1a02f35861d8d8218d3b3b","message":"docs: record the image-creation UI/UX round\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/5d8b4f3f71d20fe89b1a02f35861d8d8218d3b3b","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-09T16:09:08-07:00","added":["reports/uiux-workbench-2026-09-09/screens/after2-desktop-create.jpg","reports/uiux-workbench-2026-09-09/screens/after2-mobile-create.jpg","reports/uiux-workbench-2026-09-09/screens/before-desktop-create.jpg","reports/uiux-workbench-2026-09-09/screens/before-mobile-create.jpg"],"removed":["reports/uiux-workbench-2026-09-09/screens/after-desktop-create.jpg"],"modified":["docs/governance/log/2026-09-09-uiux-workbench.md","reports/uiux-workbench-2026-09-09/README.md"]},{"id":"eff5a2ce92dd6cf439fff105f966860b696b8f5d","message":"feat(web): tidy the image-creation page and the mobile context row\n\nRound two of the page-by-page UI/UX pass (图片创作):\n\n- Every visible text on the page is at least 12px; muted copy uses\n text-bark instead of text-stone / text-fog / ink-40..55 (CreateStudio,\n CreativeSupportSkills, model-catalog, RecoveryHint).\n- Model ids (wan2.7-image-pro, Qwen-Image-2512, ...) leave the visible\n UI: catalog cards, the online-model buttons, the prompt-model select,\n the results header and the \"改用 …\" recovery action show the catalog\n label only; the id moves into the control's title.\n- Mobile targets: creation-type, application-type, prompt chips, model\n cards, prompt-model select, brand-tone switch, seed, recommended\n aspect, \"查看设置\" and RecoveryHint actions are all at least 44px on\n small screens; the prompt-optimise button is 28px on desktop.\n- Sticky generate bar padding trimmed on mobile.\n- Shell: the mobile \"自由创作 / 生产任务\" switch moves into the context\n row next to \"全部入口\" instead of its own 48px band, so every creative\n page on a phone gains that space (test ids unchanged).\n\nCo-Authored-By: Claude Fable 5.1 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/eff5a2ce92dd6cf439fff105f966860b696b8f5d","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-09T16:08:15-07:00","added":[],"removed":[],"modified":["apps/web/src/components/material-factory/CreateStudio.tsx","apps/web/src/components/material-factory/CreativeSupportSkills.tsx","apps/web/src/components/material-factory/FactoryShell.tsx","apps/web/src/components/material-factory/factory-shell.module.css","apps/web/src/components/material-factory/model-catalog.tsx","apps/web/src/components/material-factory/ui.tsx"]}],"total_commits":0,"head_commit":{"id":"1a7c5f29eaf4aa40626df8e70173d624f758ccff","message":"Merge branch 'main' into feat/uiux-workbench-20260909\n\n# Conflicts:\n#\treports/contract-consumers.latest.json\n#\treports/governance-docs.latest.json\n#\treports/governance.latest.json\n#\treports/material-review-concurrency-guard.latest.json\n#\treports/migrations.latest.json\n#\treports/module-boundary.latest.json\n#\treports/naming.latest.json\n#\treports/order-concurrency-guard.latest.json\n#\treports/production-security.latest.json\n#\treports/public-file-integration.latest.json\n#\treports/runtime-governance.latest.json\n#\treports/schema-sync.latest.json\n#\treports/storyboard-director-guard.latest.json\n#\treports/toolchain.latest.json\n#\treports/validation-source.latest.json\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/1a7c5f29eaf4aa40626df8e70173d624f758ccff","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-09T16:25:52-07:00","added":["docs/releases/2026-09-09-cost-creative1.md"],"removed":[],"modified":["CLAUDE.md","docs/releases/current.md"]},"repository":{"id":57,"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":"image-generation","full_name":"luoanwu/image-generation","description":"","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":826048,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/image-generation/languages","html_url":"https://gitea.g-hi.com/luoanwu/image-generation","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/image-generation","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/image-generation.git","clone_url":"https://gitea.g-hi.com/luoanwu/image-generation.git","original_url":"","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":8,"open_issues_count":0,"open_pr_counter":1,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-07-06T17:04:22+08:00","updated_at":"2026-09-10T07:20:09+08:00","archived_at":"1970-01-01T08:00:00+08:00","permissions":{"admin":true,"push":true,"pull":true},"has_code":true,"has_issues":true,"internal_tracker":{"enable_time_tracker":true,"allow_only_contributors_to_track_time":true,"enable_issue_dependencies":true},"has_wiki":true,"has_pull_requests":true,"has_projects":true,"projects_mode":"all","has_releases":true,"has_packages":true,"has_actions":true,"ignore_whitespace_conflicts":false,"allow_merge_commits":true,"allow_rebase":true,"allow_rebase_explicit":true,"allow_squash_merge":true,"allow_fast_forward_only_merge":true,"allow_rebase_update":true,"allow_manual_merge":false,"autodetect_manual_merge":false,"default_delete_branch_after_merge":false,"default_merge_style":"merge","default_allow_maintainer_edit":true,"avatar_url":"","internal":false,"mirror_interval":"","object_format_name":"sha1","mirror_updated":"0001-01-01T00:00:00Z","topics":[],"licenses":[]},"pusher":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"sender":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"}}...
|
push
|
2
|
4
|
1788996360
|
1788996401
|
0
|
1788996359
|
1788996401
|
group: governance-${{ github.workflow }}-${{ githu group: governance-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: "true"
...
|
governance-governance.yml-refs/heads/main
|
1
|
Edit
Delete
|
|
23803
|
docs: record the uiux-create1 release
|
57
|
5
|
governance.yml
|
173
|
5
|
0
|
refs/heads/main
|
765e4b74adff8af1666313b2297a95f0373f4da3
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"1a7c5f29eaf4aa40626df8e70173d624f758ccff","after":"765e4b74adff8af1666313b2297a95f0373f4da3","compare_url":"https://gitea.g-hi.com/luoanwu/image-generation/compare/1a7c5f29eaf4aa40626df8e70173d624f758ccff...765e4b74adff8af1666313b2297a95f0373f4da3","commits":[{"id":"765e4b74adff8af1666313b2297a95f0373f4da3","message":"docs: record the uiux-create1 release\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/765e4b74adff8af1666313b2297a95f0373f4da3","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-09T16:31:50-07:00","added":["docs/releases/2026-09-09-uiux-create1.md"],"removed":[],"modified":["docs/governance/log/2026-09-09-uiux-workbench.md","docs/releases/current.md"]}],"total_commits":0,"head_commit":{"id":"765e4b74adff8af1666313b2297a95f0373f4da3","message":"docs: record the uiux-create1 release\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/765e4b74adff8af1666313b2297a95f0373f4da3","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-09T16:31:50-07:00","added":["docs/releases/2026-09-09-uiux-create1.md"],"removed":[],"modified":["docs/governance/log/2026-09-09-uiux-workbench.md","docs/releases/current.md"]},"repository":{"id":57,"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":"image-generation","full_name":"luoanwu/image-generation","description":"","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":826463,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/image-generation/languages","html_url":"https://gitea.g-hi.com/luoanwu/image-generation","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/image-generation","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/image-generation.git","clone_url":"https://gitea.g-hi.com/luoanwu/image-generation.git","original_url":"","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":8,"open_issues_count":0,"open_pr_counter":1,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-07-06T17:04:22+08:00","updated_at":"2026-09-10T07:25:59+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
|
1788996717
|
1788996808
|
0
|
1788996716
|
1788996808
|
group: governance-${{ github.workflow }}-${{ githu group: governance-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: "true"
...
|
governance-governance.yml-refs/heads/main
|
1
|
Edit
Delete
|
|
23804
|
test: verify the image-edit and template-making UI test: verify the image-edit and template-making UI/UX round...
|
57
|
5
|
governance.yml
|
174
|
5
|
0
|
refs/heads/main
|
9a720aeefbe32c6f9b53fad5b31c168db3ab26aa
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"765e4b74adff8af1666313b2297a95f0373f4da3","after":"9a720aeefbe32c6f9b53fad5b31c168db3ab26aa","compare_url":"https://gitea.g-hi.com/luoanwu/image-generation/compare/765e4b74adff8af1666313b2297a95f0373f4da3...9a720aeefbe32c6f9b53fad5b31c168db3ab26aa","commits":[{"id":"9a720aeefbe32c6f9b53fad5b31c168db3ab26aa","message":"test: verify the image-edit and template-making UI/UX round\n\nSeven gates and the dependency audit passed on an isolated stack bound\nto sha256:a88c420d4f1d393a930e43423b7efdfba34412dff75ce7cb45a1d9847f36d2a5; pnpm check passes. Heavy baseline rows re-marked.\nEvidence: acceptance-artifacts/uiux-workbench-2026-09-09/ (round3-*\ndirectories hold the earlier runs).\n\nCo-Authored-By: Claude Fable 5.1 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/9a720aeefbe32c6f9b53fad5b31c168db3ab26aa","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-09T16:51:44-07:00","added":[],"removed":[],"modified":["CLAUDE.md","reports/contract-consumers.latest.json","reports/dependency-audit.latest.json","reports/governance-docs.latest.json","reports/governance.latest.json","reports/inference-acceptance.latest.json","reports/material-review-concurrency-guard.latest.json","reports/migrations.latest.json","reports/module-boundary.latest.json","reports/naming.latest.json","reports/order-concurrency-guard.latest.json","reports/production-acceptance.latest.json","reports/production-security.latest.json","reports/public-file-acceptance.latest.json","reports/public-file-integration.latest.json","reports/runtime-acceptance.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/script-acceptance.latest.json","reports/sidecar-tests.latest.json","reports/storyboard-director-guard.latest.json","reports/toolchain.latest.json","reports/ui-acceptance.latest.json","reports/validation-source.latest.json"]},{"id":"49f613f14131fb0f5e89a9db3e5a89f81c3d7fb6","message":"docs: record the image-edit and template-making UI/UX round\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/49f613f14131fb0f5e89a9db3e5a89f81c3d7fb6","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-09T16:44:10-07:00","added":["reports/uiux-workbench-2026-09-09/screens/after3-mobile-edit.jpg","reports/uiux-workbench-2026-09-09/screens/after3-mobile-inpaint.jpg"],"removed":[],"modified":["docs/governance/log/2026-09-09-uiux-workbench.md","reports/uiux-workbench-2026-09-09/README.md"]},{"id":"8dff381d0437c272405f243a544ea85fa42ae575","message":"feat(web): tidy the image-edit and template-making pages\n\nRound three of the page-by-page UI/UX pass:\n\n- 图像编辑: tool buttons, \"选择图片\" and the empty-state links are 44px\n on phones; the mode descriptions and prompt counter are 12px.\n- 模板制作: slot chips, brand-word chips, the slot input, the recent\n select and the preview tabs are 44px on phones; every helper text is\n 12px and uses text-bark; the canvas slot label overlay uses 12px base.\n- Template size picker and edit source picker captions are 12px.\n\nNative window.confirm prompts stay: the template-making acceptance and\nthe templates e2e spec assert them, so replacing them is a separate\nround together with those tests.\n\nCo-Authored-By: Claude Fable 5.1 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/8dff381d0437c272405f243a544ea85fa42ae575","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-09T16:42:50-07:00","added":[],"removed":[],"modified":["apps/web/src/components/material-factory/EditStudio.tsx","apps/web/src/components/material-factory/ImageEditSourcePicker.tsx","apps/web/src/components/material-factory/InpaintStudio.tsx","apps/web/src/components/material-factory/MasterCanvas.tsx","apps/web/src/components/material-factory/TemplateSizePicker.tsx"]}],"total_commits":0,"head_commit":{"id":"9a720aeefbe32c6f9b53fad5b31c168db3ab26aa","message":"test: verify the image-edit and template-making UI/UX round\n\nSeven gates and the dependency audit passed on an isolated stack bound\nto sha256:a88c420d4f1d393a930e43423b7efdfba34412dff75ce7cb45a1d9847f36d2a5; pnpm check passes. Heavy baseline rows re-marked.\nEvidence: acceptance-artifacts/uiux-workbench-2026-09-09/ (round3-*\ndirectories hold the earlier runs).\n\nCo-Authored-By: Claude Fable 5.1 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/9a720aeefbe32c6f9b53fad5b31c168db3ab26aa","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-09T16:51:44-07:00","added":[],"removed":[],"modified":["CLAUDE.md","reports/contract-consumers.latest.json","reports/dependency-audit.latest.json","reports/governance-docs.latest.json","reports/governance.latest.json","reports/inference-acceptance.latest.json","reports/material-review-concurrency-guard.latest.json","reports/migrations.latest.json","reports/module-boundary.latest.json","reports/naming.latest.json","reports/order-concurrency-guard.latest.json","reports/production-acceptance.latest.json","reports/production-security.latest.json","reports/public-file-acceptance.latest.json","reports/public-file-integration.latest.json","reports/runtime-acceptance.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/script-acceptance.latest.json","reports/sidecar-tests.latest.json","reports/storyboard-director-guard.latest.json","reports/toolchain.latest.json","reports/ui-acceptance.latest.json","reports/validation-source.latest.json"]},"repository":{"id":57,"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":"image-generation","full_name":"luoanwu/image-generation","description":"","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":826476,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/image-generation/languages","html_url":"https://gitea.g-hi.com/luoanwu/image-generation","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/image-generation","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/image-generation.git","clone_url":"https://gitea.g-hi.com/luoanwu/image-generation.git","original_url":"","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":8,"open_issues_count":0,"open_pr_counter":1,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-07-06T17:04:22+08:00","updated_at":"2026-09-10T07:31: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
|
4
|
1788997941
|
1788997985
|
0
|
1788997939
|
1788997985
|
group: governance-${{ github.workflow }}-${{ githu group: governance-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: "true"
...
|
governance-governance.yml-refs/heads/main
|
1
|
Edit
Delete
|
|
23805
|
docs: record the uiux-edit1 release
|
57
|
5
|
governance.yml
|
175
|
5
|
0
|
refs/heads/main
|
9d504fa6d68a2b2fa2db219c34933800d6f210b0
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"9a720aeefbe32c6f9b53fad5b31c168db3ab26aa","after":"9d504fa6d68a2b2fa2db219c34933800d6f210b0","compare_url":"https://gitea.g-hi.com/luoanwu/image-generation/compare/9a720aeefbe32c6f9b53fad5b31c168db3ab26aa...9d504fa6d68a2b2fa2db219c34933800d6f210b0","commits":[{"id":"9d504fa6d68a2b2fa2db219c34933800d6f210b0","message":"docs: record the uiux-edit1 release\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/9d504fa6d68a2b2fa2db219c34933800d6f210b0","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-09T16:58:03-07:00","added":["docs/releases/2026-09-09-uiux-edit1.md"],"removed":[],"modified":["docs/governance/log/2026-09-09-uiux-workbench.md","docs/releases/current.md"]}],"total_commits":0,"head_commit":{"id":"9d504fa6d68a2b2fa2db219c34933800d6f210b0","message":"docs: record the uiux-edit1 release\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/9d504fa6d68a2b2fa2db219c34933800d6f210b0","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-09T16:58:03-07:00","added":["docs/releases/2026-09-09-uiux-edit1.md"],"removed":[],"modified":["docs/governance/log/2026-09-09-uiux-workbench.md","docs/releases/current.md"]},"repository":{"id":57,"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":"image-generation","full_name":"luoanwu/image-generation","description":"","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":826687,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/image-generation/languages","html_url":"https://gitea.g-hi.com/luoanwu/image-generation","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/image-generation","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/image-generation.git","clone_url":"https://gitea.g-hi.com/luoanwu/image-generation.git","original_url":"","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":8,"open_issues_count":0,"open_pr_counter":1,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-07-06T17:04:22+08:00","updated_at":"2026-09-10T07:52: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
|
4
|
1788998291
|
1788998332
|
0
|
1788998289
|
1788998332
|
group: governance-${{ github.workflow }}-${{ githu group: governance-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: "true"
...
|
governance-governance.yml-refs/heads/main
|
1
|
Edit
Delete
|
|
23806
|
test: verify the content-design and stage-bar UI/U test: verify the content-design and stage-bar UI/UX round...
|
57
|
5
|
governance.yml
|
176
|
5
|
0
|
refs/heads/main
|
311bf5edce82bbf65f94f42bb229d190cf864539
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"9d504fa6d68a2b2fa2db219c34933800d6f210b0","after":"311bf5edce82bbf65f94f42bb229d190cf864539","compare_url":"https://gitea.g-hi.com/luoanwu/image-generation/compare/9d504fa6d68a2b2fa2db219c34933800d6f210b0...311bf5edce82bbf65f94f42bb229d190cf864539","commits":[{"id":"311bf5edce82bbf65f94f42bb229d190cf864539","message":"test: verify the content-design and stage-bar UI/UX round\n\nSeven gates and the dependency audit passed on an isolated stack bound\nto sha256:ec02e1ec06b171d2655ef46e69fbbe66dbe353bf38a7fbe45b510b311fa8a0f9; pnpm check passes. Heavy baseline rows re-marked.\nEvidence: acceptance-artifacts/uiux-workbench-2026-09-09/.\n\nCo-Authored-By: Claude Fable 5.1 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/311bf5edce82bbf65f94f42bb229d190cf864539","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-09T17:18:16-07:00","added":[],"removed":[],"modified":["CLAUDE.md","reports/contract-consumers.latest.json","reports/dependency-audit.latest.json","reports/governance-docs.latest.json","reports/governance.latest.json","reports/inference-acceptance.latest.json","reports/material-review-concurrency-guard.latest.json","reports/migrations.latest.json","reports/module-boundary.latest.json","reports/naming.latest.json","reports/order-concurrency-guard.latest.json","reports/production-acceptance.latest.json","reports/production-security.latest.json","reports/public-file-acceptance.latest.json","reports/public-file-integration.latest.json","reports/runtime-acceptance.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/script-acceptance.latest.json","reports/sidecar-tests.latest.json","reports/storyboard-director-guard.latest.json","reports/toolchain.latest.json","reports/ui-acceptance.latest.json","reports/validation-source.latest.json"]},{"id":"05e3719ad7f58ea2870d9f80d419ab54aea6c00a","message":"docs: record the content-design and stage-bar UI/UX round\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/05e3719ad7f58ea2870d9f80d419ab54aea6c00a","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-09T17:10:43-07:00","added":["reports/uiux-workbench-2026-09-09/screens/after4-desktop-content.jpg","reports/uiux-workbench-2026-09-09/screens/after4-desktop-storyboard.jpg","reports/uiux-workbench-2026-09-09/screens/after4-mobile-content.jpg","reports/uiux-workbench-2026-09-09/screens/before-desktop-industry-trends.jpg"],"removed":[],"modified":["docs/governance/log/2026-09-09-uiux-workbench.md","reports/uiux-workbench-2026-09-09/README.md"]},{"id":"dfc24240bfee2d835b9add09385e7b585cee6817","message":"feat(web): flatten the creative stage bar and tidy the content-design pages\n\nRound four of the page-by-page UI/UX pass (内容设计 + the stage bar\nshared by six creative pages):\n\n- PipelineFlow: one step row plus one summary line (\"purpose ·\n deliverable\") by default; the gate, the boundary and the saved\n outcomes fold into a details panel with the previous/next buttons on\n the summary. Desktop chrome drops from ~173px to ~74px; the storyboard\n h1 moves from 461px to 377px on desktop and 663px to 538px on phones.\n Step buttons are 44px on phones, all text 12px; test ids unchanged.\n- Brand-tone switch (content/storyboard pages): a real 24px checkbox in\n a 44px label instead of the 13px native box.\n- Content workbench CSS: 10/11px sizes floored to 12px, the primary\n colour uses the design-system #B7361F, every control is 44px on\n phones; the brand-reference textarea gets an accessible name.\n- Industry trends CSS: 11px floored to 12px, accent unified to #B7361F,\n 44px controls on phones, source link 28px on desktop.\n\nCo-Authored-By: Claude Fable 5.1 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/dfc24240bfee2d835b9add09385e7b585cee6817","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-09T17:10:20-07:00","added":[],"removed":[],"modified":["apps/web/src/components/material-factory/ContentStudio.tsx","apps/web/src/components/material-factory/CreativeQualityPanel.tsx","apps/web/src/components/material-factory/PipelineFlow.tsx","apps/web/src/components/material-factory/content-studio.module.css","apps/web/src/components/material-factory/industry-trends/industry-trends.module.css"]}],"total_commits":0,"head_commit":{"id":"311bf5edce82bbf65f94f42bb229d190cf864539","message":"test: verify the content-design and stage-bar UI/UX round\n\nSeven gates and the dependency audit passed on an isolated stack bound\nto sha256:ec02e1ec06b171d2655ef46e69fbbe66dbe353bf38a7fbe45b510b311fa8a0f9; pnpm check passes. Heavy baseline rows re-marked.\nEvidence: acceptance-artifacts/uiux-workbench-2026-09-09/.\n\nCo-Authored-By: Claude Fable 5.1 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/311bf5edce82bbf65f94f42bb229d190cf864539","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-09T17:18:16-07:00","added":[],"removed":[],"modified":["CLAUDE.md","reports/contract-consumers.latest.json","reports/dependency-audit.latest.json","reports/governance-docs.latest.json","reports/governance.latest.json","reports/inference-acceptance.latest.json","reports/material-review-concurrency-guard.latest.json","reports/migrations.latest.json","reports/module-boundary.latest.json","reports/naming.latest.json","reports/order-concurrency-guard.latest.json","reports/production-acceptance.latest.json","reports/production-security.latest.json","reports/public-file-acceptance.latest.json","reports/public-file-integration.latest.json","reports/runtime-acceptance.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/script-acceptance.latest.json","reports/sidecar-tests.latest.json","reports/storyboard-director-guard.latest.json","reports/toolchain.latest.json","reports/ui-acceptance.latest.json","reports/validation-source.latest.json"]},"repository":{"id":57,"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":"image-generation","full_name":"luoanwu/image-generation","description":"","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":826700,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/image-generation/languages","html_url":"https://gitea.g-hi.com/luoanwu/image-generation","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/image-generation","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/image-generation.git","clone_url":"https://gitea.g-hi.com/luoanwu/image-generation.git","original_url":"","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":8,"open_issues_count":0,"open_pr_counter":1,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-07-06T17:04:22+08:00","updated_at":"2026-09-10T07:58:09+08:00","archived_at":"1970-01-01T08:00:00+08:00","permissions":{"admin":true,"push":true,"pull":true},"has_code":true,"has_issues":true,"internal_tracker":{"enable_time_tracker":true,"allow_only_contributors_to_track_time":true,"enable_issue_dependencies":true},"has_wiki":true,"has_pull_requests":true,"has_projects":true,"projects_mode":"all","has_releases":true,"has_packages":true,"has_actions":true,"ignore_whitespace_conflicts":false,"allow_merge_commits":true,"allow_rebase":true,"allow_rebase_explicit":true,"allow_squash_merge":true,"allow_fast_forward_only_merge":true,"allow_rebase_update":true,"allow_manual_merge":false,"autodetect_manual_merge":false,"default_delete_branch_after_merge":false,"default_merge_style":"merge","default_allow_maintainer_edit":true,"avatar_url":"","internal":false,"mirror_interval":"","object_format_name":"sha1","mirror_updated":"0001-01-01T00:00:00Z","topics":[],"licenses":[]},"pusher":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"sender":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"}}...
|
push
|
2
|
4
|
1788999544
|
1788999585
|
0
|
1788999542
|
1788999585
|
group: governance-${{ github.workflow }}-${{ githu group: governance-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: "true"
...
|
governance-governance.yml-refs/heads/main
|
1
|
Edit
Delete
|
|
23807
|
docs: record the uiux-content1 release
|
57
|
5
|
governance.yml
|
177
|
5
|
0
|
refs/heads/main
|
0d0923f11a7553a93c10cfe01a9620b8dd3971ae
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"311bf5edce82bbf65f94f42bb229d190cf864539","after":"0d0923f11a7553a93c10cfe01a9620b8dd3971ae","compare_url":"https://gitea.g-hi.com/luoanwu/image-generation/compare/311bf5edce82bbf65f94f42bb229d190cf864539...0d0923f11a7553a93c10cfe01a9620b8dd3971ae","commits":[{"id":"0d0923f11a7553a93c10cfe01a9620b8dd3971ae","message":"docs: record the uiux-content1 release\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/0d0923f11a7553a93c10cfe01a9620b8dd3971ae","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-09T17:24:50-07:00","added":["docs/releases/2026-09-09-uiux-content1.md"],"removed":[],"modified":["docs/governance/log/2026-09-09-uiux-workbench.md","docs/releases/current.md"]}],"total_commits":0,"head_commit":{"id":"0d0923f11a7553a93c10cfe01a9620b8dd3971ae","message":"docs: record the uiux-content1 release\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/0d0923f11a7553a93c10cfe01a9620b8dd3971ae","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-09T17:24:50-07:00","added":["docs/releases/2026-09-09-uiux-content1.md"],"removed":[],"modified":["docs/governance/log/2026-09-09-uiux-workbench.md","docs/releases/current.md"]},"repository":{"id":57,"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":"image-generation","full_name":"luoanwu/image-generation","description":"","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":827137,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/image-generation/languages","html_url":"https://gitea.g-hi.com/luoanwu/image-generation","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/image-generation","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/image-generation.git","clone_url":"https://gitea.g-hi.com/luoanwu/image-generation.git","original_url":"","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":8,"open_issues_count":0,"open_pr_counter":1,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-07-06T17:04:22+08:00","updated_at":"2026-09-10T08:19: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
|
4
|
1788999897
|
1788999938
|
0
|
1788999895
|
1788999938
|
group: governance-${{ github.workflow }}-${{ githu group: governance-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: "true"
...
|
governance-governance.yml-refs/heads/main
|
1
|
Edit
Delete
|
|
23808
|
docs: record the script and storyboard UI/UX round
|
57
|
5
|
governance.yml
|
178
|
5
|
0
|
refs/heads/main
|
cbfd16f0acce3825bb85f523aede63ea30101d40
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"0d0923f11a7553a93c10cfe01a9620b8dd3971ae","after":"cbfd16f0acce3825bb85f523aede63ea30101d40","compare_url":"https://gitea.g-hi.com/luoanwu/image-generation/compare/0d0923f11a7553a93c10cfe01a9620b8dd3971ae...cbfd16f0acce3825bb85f523aede63ea30101d40","commits":[{"id":"cbfd16f0acce3825bb85f523aede63ea30101d40","message":"docs: record the script and storyboard UI/UX round\n\nCo-Authored-By: Claude Fable 5.1 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/cbfd16f0acce3825bb85f523aede63ea30101d40","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-09T17:48:17-07:00","added":["reports/uiux-workbench-2026-09-09/screens/after5-desktop-script.jpg","reports/uiux-workbench-2026-09-09/screens/after5-mobile-script.jpg","reports/uiux-workbench-2026-09-09/screens/after5-mobile-storyboard.jpg","reports/uiux-workbench-2026-09-09/screens/before-desktop-script.jpg"],"removed":[],"modified":["docs/governance/log/2026-09-09-uiux-workbench.md","reports/uiux-workbench-2026-09-09/README.md"]},{"id":"0037770e6be549840b9432c8a87c76089f2074e0","message":"feat(web): tidy the shooting-script and storyboard pages\n\n- 12px text floor and bark secondary colour across the script, shot board,\n role panel, storyboard and director-review components\n- shot adjustment inputs, seed and script selector gain accessible names\n- model ids leave the visible UI: catalog labels in the script status pill\n and the storyboard plan line, route label and capability copy in plain words\n- native file inputs get a styled 44px button; shot/role icon buttons 44px\n- global phone rule: every workspace control gets a 44px hot zone, except\n canvas overlays, the AI edit timeline and the 3D preview\n\nCo-Authored-By: Claude Fable 5.1 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/0037770e6be549840b9432c8a87c76089f2074e0","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-09T17:47:44-07:00","added":[],"removed":[],"modified":["apps/web/src/app/globals.css","apps/web/src/components/material-factory/DirectorReviewWorkbench.tsx","apps/web/src/components/material-factory/NarrativeBeats.tsx","apps/web/src/components/material-factory/RoleConfirmPanel.tsx","apps/web/src/components/material-factory/RoleReferencePreview.tsx","apps/web/src/components/material-factory/ScriptGenerationQueue.tsx","apps/web/src/components/material-factory/ScriptSourceUpload.tsx","apps/web/src/components/material-factory/ScriptStudio.tsx","apps/web/src/components/material-factory/ShotBoard.tsx","apps/web/src/components/material-factory/ShotStillPreview.tsx","apps/web/src/components/material-factory/StillVersionBar.tsx","apps/web/src/components/material-factory/StoryboardContactSheet.tsx","apps/web/src/components/material-factory/StoryboardScriptImport.tsx","apps/web/src/components/material-factory/StoryboardStudio.tsx","apps/web/src/components/material-factory/StoryboardVisualAssetImport.tsx","apps/web/src/components/material-factory/StoryboardWorkflowPanel.tsx","apps/web/src/components/material-factory/VideoContactImport.tsx","apps/web/src/components/material-factory/VideoStudio.tsx","apps/web/src/components/material-factory/model-catalog.tsx"]}],"total_commits":0,"head_commit":{"id":"cbfd16f0acce3825bb85f523aede63ea30101d40","message":"docs: record the script and storyboard UI/UX round\n\nCo-Authored-By: Claude Fable 5.1 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/cbfd16f0acce3825bb85f523aede63ea30101d40","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-09T17:48:17-07:00","added":["reports/uiux-workbench-2026-09-09/screens/after5-desktop-script.jpg","reports/uiux-workbench-2026-09-09/screens/after5-mobile-script.jpg","reports/uiux-workbench-2026-09-09/screens/after5-mobile-storyboard.jpg","reports/uiux-workbench-2026-09-09/screens/before-desktop-script.jpg"],"removed":[],"modified":["docs/governance/log/2026-09-09-uiux-workbench.md","reports/uiux-workbench-2026-09-09/README.md"]},"repository":{"id":57,"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":"image-generation","full_name":"luoanwu/image-generation","description":"","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":827150,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/image-generation/languages","html_url":"https://gitea.g-hi.com/luoanwu/image-generation","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/image-generation","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/image-generation.git","clone_url":"https://gitea.g-hi.com/luoanwu/image-generation.git","original_url":"","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":8,"open_issues_count":0,"open_pr_counter":1,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-07-06T17:04:22+08:00","updated_at":"2026-09-10T08:24: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
|
4
|
1789002438
|
1789002529
|
0
|
1789002438
|
1789002529
|
group: governance-${{ github.workflow }}-${{ githu group: governance-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: "true"
...
|
governance-governance.yml-refs/heads/main
|
1
|
Edit
Delete
|
|
23810
|
docs: record the uiux-script3 release and its reco docs: record the uiux-script3 release and its recovery...
|
57
|
5
|
governance.yml
|
179
|
5
|
0
|
refs/heads/main
|
eb9f043fa4c56dae0d634c3b9de9b7de82514b24
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"cbfd16f0acce3825bb85f523aede63ea30101d40","after":"eb9f043fa4c56dae0d634c3b9de9b7de82514b24","compare_url":"https://gitea.g-hi.com/luoanwu/image-generation/compare/cbfd16f0acce3825bb85f523aede63ea30101d40...eb9f043fa4c56dae0d634c3b9de9b7de82514b24","commits":[{"id":"eb9f043fa4c56dae0d634c3b9de9b7de82514b24","message":"docs: record the uiux-script3 release and its recovery\n\nCo-Authored-By: Claude Fable 5.1 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/eb9f043fa4c56dae0d634c3b9de9b7de82514b24","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-09T18:32:42-07:00","added":["docs/releases/2026-09-10-uiux-script3.md"],"removed":[],"modified":["docs/governance/log/2026-09-09-uiux-workbench.md","docs/releases/current.md"]}],"total_commits":0,"head_commit":{"id":"eb9f043fa4c56dae0d634c3b9de9b7de82514b24","message":"docs: record the uiux-script3 release and its recovery\n\nCo-Authored-By: Claude Fable 5.1 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/eb9f043fa4c56dae0d634c3b9de9b7de82514b24","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-09T18:32:42-07:00","added":["docs/releases/2026-09-10-uiux-script3.md"],"removed":[],"modified":["docs/governance/log/2026-09-09-uiux-workbench.md","docs/releases/current.md"]},"repository":{"id":57,"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":"image-generation","full_name":"luoanwu/image-generation","description":"","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":827657,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/image-generation/languages","html_url":"https://gitea.g-hi.com/luoanwu/image-generation","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/image-generation","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/image-generation.git","clone_url":"https://gitea.g-hi.com/luoanwu/image-generation.git","original_url":"","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":8,"open_issues_count":0,"open_pr_counter":1,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-07-06T17:04:22+08:00","updated_at":"2026-09-10T09:07:18+08:00","archived_at":"1970-01-01T08:00:00+08:00","permissions":{"admin":true,"push":true,"pull":true},"has_code":true,"has_issues":true,"internal_tracker":{"enable_time_tracker":true,"allow_only_contributors_to_track_time":true,"enable_issue_dependencies":true},"has_wiki":true,"has_pull_requests":true,"has_projects":true,"projects_mode":"all","has_releases":true,"has_packages":true,"has_actions":true,"ignore_whitespace_conflicts":false,"allow_merge_commits":true,"allow_rebase":true,"allow_rebase_explicit":true,"allow_squash_merge":true,"allow_fast_forward_only_merge":true,"allow_rebase_update":true,"allow_manual_merge":false,"autodetect_manual_merge":false,"default_delete_branch_after_merge":false,"default_merge_style":"merge","default_allow_maintainer_edit":true,"avatar_url":"","internal":false,"mirror_interval":"","object_format_name":"sha1","mirror_updated":"0001-01-01T00:00:00Z","topics":[],"licenses":[]},"pusher":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"sender":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"}}...
|
push
|
2
|
4
|
1789004150
|
1789004192
|
0
|
1789003966
|
1789004192
|
group: governance-${{ github.workflow }}-${{ githu group: governance-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: "true"
...
|
governance-governance.yml-refs/heads/main
|
1
|
Edit
Delete
|
|
23813
|
test: verify the content brief default candidates test: verify the content brief default candidates round...
|
57
|
5
|
governance.yml
|
180
|
5
|
0
|
refs/heads/main
|
dddfe03474a30345361b3509f30a0843724ffb47
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"eb9f043fa4c56dae0d634c3b9de9b7de82514b24","after":"dddfe03474a30345361b3509f30a0843724ffb47","compare_url":"https://gitea.g-hi.com/luoanwu/image-generation/compare/eb9f043fa4c56dae0d634c3b9de9b7de82514b24...dddfe03474a30345361b3509f30a0843724ffb47","commits":[{"id":"dddfe03474a30345361b3509f30a0843724ffb47","message":"test: verify the content brief default candidates round\n\nSeven heavy gates plus pnpm check pass on the isolated stack at source\nfingerprint 7b85b506; CLAUDE.md heavy rows re-marked accordingly.\n\nCo-Authored-By: Claude Fable 5.1 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/dddfe03474a30345361b3509f30a0843724ffb47","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-09T19:54:42-07:00","added":[],"removed":[],"modified":["CLAUDE.md","reports/admin-brands.desktop.png","reports/admin-brands.mobile.png","reports/admin-mobile.png","reports/content-detail.brief-desktop.png","reports/content-detail.images-desktop.png","reports/content-detail.output-desktop.png","reports/content-detail.output-mobile.png","reports/content-detail.plans-desktop.png","reports/content-detail.review-desktop.png","reports/contract-consumers.latest.json","reports/creative-history-hidden.desktop.png","reports/creative-history-restore.mobile.png","reports/creative-quality.desktop.png","reports/dependency-audit.latest.json","reports/director-workbench.desktop.png","reports/director-workbench.mobile.png","reports/governance-docs.latest.json","reports/governance.latest.json","reports/image-creation-1135.png","reports/image-creation-1440.png","reports/image-creation-390.png","reports/image-creation-768.png","reports/image-edit-1135.png","reports/image-edit-1440.png","reports/image-edit-390.png","reports/image-edit-768.png","reports/image-edit-mobile-form.png","reports/image-edit-result.png","reports/inference-acceptance.latest.json","reports/material-review-concurrency-guard.latest.json","reports/migrations.latest.json","reports/model-api-key-saved.png","reports/model-credential-error.desktop.png","reports/module-boundary.latest.json","reports/naming.latest.json","reports/order-concurrency-guard.latest.json","reports/prd-retry.mobile.png","reports/prd-review.desktop.png","reports/production-acceptance.latest.json","reports/production-delivery-released.desktop.png","reports/production-delivery-revoked.mobile.png","reports/production-pagination.desktop.png","reports/production-pagination.mobile.png","reports/production-review-preview.desktop.png","reports/production-security.latest.json","reports/production-single-tenant-create.desktop.png","reports/production-single-tenant-separation.desktop.png","reports/public-file-acceptance.latest.json","reports/public-file-integration.latest.json","reports/runtime-acceptance.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/script-acceptance.latest.json","reports/script-generation-queue.png","reports/sidecar-tests.latest.json","reports/storyboard-asset-dialog.desktop.png","reports/storyboard-asset-dialog.mobile.png","reports/storyboard-director-guard.latest.json","reports/storyboard-frame-dialog.desktop.first.png","reports/storyboard-frame-dialog.desktop.last.png","reports/storyboard-frame-dialog.mobile.first.png","reports/storyboard-frame-dialog.mobile.last.png","reports/storyboard-frame-dialog.mobile.saved.png","reports/template-making.1135.png","reports/template-making.1280.png","reports/template-making.1440.png","reports/template-making.390.png","reports/template-making.768.png","reports/template-preview.edit.png","reports/template-preview.templates.png","reports/template-save-ready.APPLICATION.png","reports/template-save-ready.GENERAL.png","reports/template-save-ready.SCENE.png","reports/template-saved-master.APPLICATION.png","reports/template-saved-master.GENERAL.png","reports/template-types.desktop.png","reports/template-types.mobile.png","reports/toolchain.latest.json","reports/ui-acceptance.desktop.png","reports/ui-acceptance.draft-import.png","reports/ui-acceptance.latest.json","reports/ui-acceptance.mobile.png","reports/ux-edit.desktop.png","reports/ux-home.desktop.png","reports/ux-home.mobile.png","reports/ux-intake.desktop.png","reports/validation-source.latest.json","reports/video-batch-paused.mobile.png","reports/video-regenerate-2026-09-08/desktop.png","reports/video-regenerate-2026-09-08/mobile.png"]},{"id":"24566351feb01ed76b5a7a2a136acadceabb4397","message":"feat(content): propose brief default candidates after the purpose is chosen\n\nSelecting a creation purpose now submits one BRIEF content task (debounced,\nbrand required, existing idempotency/receipt chain). Both backends parse the\nmodel's JSON object through the shared contentBriefSuggestionSchema: only the\neleven proposable fields survive, enum-invalid values, blanks and fact fields\n(purpose, lockedFacts, references, music) are dropped, and an unusable answer\nis a 422. The candidate dialog lists current vs proposed per field; empty or\ndefault fields are pre-ticked and only ticked fields are written into a new\n\"采用简报候选\" revision.\n\nCo-Authored-By: Claude Fable 5.1 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/24566351feb01ed76b5a7a2a136acadceabb4397","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-09T19:54:41-07:00","added":["docs/governance/log/2026-09-09-content-brief-candidates.md","reports/content-brief-candidates-2026-09-09/README.md"],"removed":[],"modified":["apps/api-fastify/src/modules/creative-project/content.service.ts","apps/api-fastify/test/content-workbench.integration.test.ts","apps/api-nestjs/src/creative-project/content.service.ts","apps/api-nestjs/test/content-workbench.integration.test.ts","apps/web/src/components/material-factory/ContentStudio.tsx","apps/web/src/components/material-factory/content-studio.module.css","docs/product/content-creation-workbench.md","packages/contracts/src/content.test.ts","packages/contracts/src/content.ts"]}],"total_commits":0,"head_commit":{"id":"dddfe03474a30345361b3509f30a0843724ffb47","message":"test: verify the content brief default candidates round\n\nSeven heavy gates plus pnpm check pass on the isolated stack at source\nfingerprint 7b85b506; CLAUDE.md heavy rows re-marked accordingly.\n\nCo-Authored-By: Claude Fable 5.1 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/dddfe03474a30345361b3509f30a0843724ffb47","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-09T19:54:42-07:00","added":[],"removed":[],"modified":["CLAUDE.md","reports/admin-brands.desktop.png","reports/admin-brands.mobile.png","reports/admin-mobile.png","reports/content-detail.brief-desktop.png","reports/content-detail.images-desktop.png","reports/content-detail.output-desktop.png","reports/content-detail.output-mobile.png","reports/content-detail.plans-desktop.png","reports/content-detail.review-desktop.png","reports/contract-consumers.latest.json","reports/creative-history-hidden.desktop.png","reports/creative-history-restore.mobile.png","reports/creative-quality.desktop.png","reports/dependency-audit.latest.json","reports/director-workbench.desktop.png","reports/director-workbench.mobile.png","reports/governance-docs.latest.json","reports/governance.latest.json","reports/image-creation-1135.png","reports/image-creation-1440.png","reports/image-creation-390.png","reports/image-creation-768.png","reports/image-edit-1135.png","reports/image-edit-1440.png","reports/image-edit-390.png","reports/image-edit-768.png","reports/image-edit-mobile-form.png","reports/image-edit-result.png","reports/inference-acceptance.latest.json","reports/material-review-concurrency-guard.latest.json","reports/migrations.latest.json","reports/model-api-key-saved.png","reports/model-credential-error.desktop.png","reports/module-boundary.latest.json","reports/naming.latest.json","reports/order-concurrency-guard.latest.json","reports/prd-retry.mobile.png","reports/prd-review.desktop.png","reports/production-acceptance.latest.json","reports/production-delivery-released.desktop.png","reports/production-delivery-revoked.mobile.png","reports/production-pagination.desktop.png","reports/production-pagination.mobile.png","reports/production-review-preview.desktop.png","reports/production-security.latest.json","reports/production-single-tenant-create.desktop.png","reports/production-single-tenant-separation.desktop.png","reports/public-file-acceptance.latest.json","reports/public-file-integration.latest.json","reports/runtime-acceptance.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/script-acceptance.latest.json","reports/script-generation-queue.png","reports/sidecar-tests.latest.json","reports/storyboard-asset-dialog.desktop.png","reports/storyboard-asset-dialog.mobile.png","reports/storyboard-director-guard.latest.json","reports/storyboard-frame-dialog.desktop.first.png","reports/storyboard-frame-dialog.desktop.last.png","reports/storyboard-frame-dialog.mobile.first.png","reports/storyboard-frame-dialog.mobile.last.png","reports/storyboard-frame-dialog.mobile.saved.png","reports/template-making.1135.png","reports/template-making.1280.png","reports/template-making.1440.png","reports/template-making.390.png","reports/template-making.768.png","reports/template-preview.edit.png","reports/template-preview.templates.png","reports/template-save-ready.APPLICATION.png","reports/template-save-ready.GENERAL.png","reports/template-save-ready.SCENE.png","reports/template-saved-master.APPLICATION.png","reports/template-saved-master.GENERAL.png","reports/template-types.desktop.png","reports/template-types.mobile.png","reports/toolchain.latest.json","reports/ui-acceptance.desktop.png","reports/ui-acceptance.draft-import.png","reports/ui-acceptance.latest.json","reports/ui-acceptance.mobile.png","reports/ux-edit.desktop.png","reports/ux-home.desktop.png","reports/ux-home.mobile.png","reports/ux-intake.desktop.png","reports/validation-source.latest.json","reports/video-batch-paused.mobile.png","reports/video-regenerate-2026-09-08/desktop.png","reports/video-regenerate-2026-09-08/mobile.png"]},"repository":{"id":57,"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":"image-generation","full_name":"luoanwu/image-generation","description":"","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":827670,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/image-generation/languages","html_url":"https://gitea.g-hi.com/luoanwu/image-generation","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/image-generation","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/image-generation.git","clone_url":"https://gitea.g-hi.com/luoanwu/image-generation.git","original_url":"","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":8,"open_issues_count":0,"open_pr_counter":1,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-07-06T17:04:22+08:00","updated_at":"2026-09-10T09:32: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":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
|
1789008925
|
1789008967
|
0
|
1789008924
|
1789008967
|
group: governance-${{ github.workflow }}-${{ githu group: governance-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: "true"
...
|
governance-governance.yml-refs/heads/main
|
1
|
Edit
Delete
|
|
23815
|
test: verify the illustration brief candidates rou test: verify the illustration brief candidates round...
|
57
|
5
|
governance.yml
|
181
|
5
|
0
|
refs/heads/main
|
cac4dfce5420bb002137d3438e10560495d1f48f
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"dddfe03474a30345361b3509f30a0843724ffb47","after":"cac4dfce5420bb002137d3438e10560495d1f48f","compare_url":"https://gitea.g-hi.com/luoanwu/image-generation/compare/dddfe03474a30345361b3509f30a0843724ffb47...cac4dfce5420bb002137d3438e10560495d1f48f","commits":[{"id":"cac4dfce5420bb002137d3438e10560495d1f48f","message":"test: verify the illustration brief candidates round\n\nSeven heavy gates plus pnpm check pass on the isolated stack at source\nfingerprint 96e80feb; CLAUDE.md heavy rows re-marked accordingly.\n\nCo-Authored-By: Claude Fable 5.1 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/cac4dfce5420bb002137d3438e10560495d1f48f","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-09T20:53:33-07:00","added":["reports/illustration-brief-candidates-2026-09-10/README.md"],"removed":[],"modified":["CLAUDE.md","reports/admin-brands.desktop.png","reports/admin-brands.mobile.png","reports/admin-mobile.png","reports/content-detail.images-desktop.png","reports/content-detail.output-mobile.png","reports/content-detail.plans-desktop.png","reports/contract-consumers.latest.json","reports/creative-history-hidden.desktop.png","reports/creative-history-restore.mobile.png","reports/creative-quality.desktop.png","reports/dependency-audit.latest.json","reports/director-workbench.desktop.png","reports/governance-docs.latest.json","reports/governance.latest.json","reports/image-creation-1440.png","reports/image-edit-1135.png","reports/image-edit-1440.png","reports/image-edit-390.png","reports/image-edit-768.png","reports/image-edit-result.png","reports/inference-acceptance.latest.json","reports/material-review-concurrency-guard.latest.json","reports/migrations.latest.json","reports/model-api-key-saved.png","reports/model-credential-error.desktop.png","reports/model-credential-error.mobile.png","reports/module-boundary.latest.json","reports/naming.latest.json","reports/order-concurrency-guard.latest.json","reports/prd-retry.mobile.png","reports/prd-review.desktop.png","reports/production-acceptance.latest.json","reports/production-delivery-released.desktop.png","reports/production-delivery-revoked.mobile.png","reports/production-pagination.desktop.png","reports/production-pagination.mobile.png","reports/production-review-preview.desktop.png","reports/production-security.latest.json","reports/production-single-tenant-create.desktop.png","reports/production-single-tenant-separation.desktop.png","reports/public-file-acceptance.latest.json","reports/public-file-integration.latest.json","reports/runtime-acceptance.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/script-acceptance.latest.json","reports/script-generation-queue.png","reports/sidecar-tests.latest.json","reports/storyboard-asset-dialog.desktop.png","reports/storyboard-director-guard.latest.json","reports/storyboard-frame-dialog.desktop.first.png","reports/storyboard-frame-dialog.desktop.last.png","reports/storyboard-frame-dialog.mobile.saved.png","reports/template-making.1440.png","reports/template-saved-master.APPLICATION.png","reports/template-saved-master.GENERAL.png","reports/toolchain.latest.json","reports/ui-acceptance.desktop.png","reports/ui-acceptance.draft-import.png","reports/ui-acceptance.latest.json","reports/ui-acceptance.mobile.png","reports/ui-acceptance.production.png","reports/ux-edit.desktop.png","reports/ux-home.mobile.png","reports/ux-intake.desktop.png","reports/validation-source.latest.json","reports/video-batch-paused.mobile.png","reports/video-regenerate-2026-09-08/desktop.png","reports/video-regenerate-2026-09-08/mobile.png"]},{"id":"f7918d06a7da573f21729217c92449e446c205f1","message":"feat(content): propose illustration brief candidates for one slot from the real intent\n\nThe illustration editor (\"编辑配图方案 · 封面/段落之后\") gains \"按真实意图生成简报候选\"\nand \"查看简报候选\". It submits one IMAGE_BRIEF content task carrying the\nillustrationId through the existing idempotency/receipt chain. Both backends\nrefuse unknown slots before calling the model and parse the JSON object through\nthe shared contentIllustrationSuggestionSchema: only the six text fields\n(purpose, description, visual, caption, alt, overlayText) survive; size,\nreferences, the factual flag, position and selected asset are dropped, and an\nunusable answer is a 422. The candidate dialog lists current vs proposed per\nfield, pre-ticks empty or default fields, and writes only ticked fields into a\n\"采用配图简报候选\" revision. Image history and the busy-slot check now look at\nIMAGE operations only.\n\nCo-Authored-By: Claude Fable 5.1 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/f7918d06a7da573f21729217c92449e446c205f1","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-09T20:53:32-07:00","added":["docs/governance/log/2026-09-10-illustration-brief-candidates.md"],"removed":[],"modified":["apps/api-fastify/src/modules/creative-project/content.service.ts","apps/api-fastify/src/modules/creative-project/creative-project.service.ts","apps/api-fastify/test/content-workbench.integration.test.ts","apps/api-nestjs/src/creative-project/content.service.ts","apps/api-nestjs/src/creative-project/creative-project.service.ts","apps/api-nestjs/test/content-workbench.integration.test.ts","apps/web/src/components/material-factory/ContentStudio.tsx","apps/web/src/components/material-factory/content-studio.module.css","docs/product/content-creation-workbench.md","packages/contracts/src/content.test.ts","packages/contracts/src/content.ts"]}],"total_commits":0,"head_commit":{"id":"cac4dfce5420bb002137d3438e10560495d1f48f","message":"test: verify the illustration brief candidates round\n\nSeven heavy gates plus pnpm check pass on the isolated stack at source\nfingerprint 96e80feb; CLAUDE.md heavy rows re-marked accordingly.\n\nCo-Authored-By: Claude Fable 5.1 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/cac4dfce5420bb002137d3438e10560495d1f48f","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-09T20:53:33-07:00","added":["reports/illustration-brief-candidates-2026-09-10/README.md"],"removed":[],"modified":["CLAUDE.md","reports/admin-brands.desktop.png","reports/admin-brands.mobile.png","reports/admin-mobile.png","reports/content-detail.images-desktop.png","reports/content-detail.output-mobile.png","reports/content-detail.plans-desktop.png","reports/contract-consumers.latest.json","reports/creative-history-hidden.desktop.png","reports/creative-history-restore.mobile.png","reports/creative-quality.desktop.png","reports/dependency-audit.latest.json","reports/director-workbench.desktop.png","reports/governance-docs.latest.json","reports/governance.latest.json","reports/image-creation-1440.png","reports/image-edit-1135.png","reports/image-edit-1440.png","reports/image-edit-390.png","reports/image-edit-768.png","reports/image-edit-result.png","reports/inference-acceptance.latest.json","reports/material-review-concurrency-guard.latest.json","reports/migrations.latest.json","reports/model-api-key-saved.png","reports/model-credential-error.desktop.png","reports/model-credential-error.mobile.png","reports/module-boundary.latest.json","reports/naming.latest.json","reports/order-concurrency-guard.latest.json","reports/prd-retry.mobile.png","reports/prd-review.desktop.png","reports/production-acceptance.latest.json","reports/production-delivery-released.desktop.png","reports/production-delivery-revoked.mobile.png","reports/production-pagination.desktop.png","reports/production-pagination.mobile.png","reports/production-review-preview.desktop.png","reports/production-security.latest.json","reports/production-single-tenant-create.desktop.png","reports/production-single-tenant-separation.desktop.png","reports/public-file-acceptance.latest.json","reports/public-file-integration.latest.json","reports/runtime-acceptance.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/script-acceptance.latest.json","reports/script-generation-queue.png","reports/sidecar-tests.latest.json","reports/storyboard-asset-dialog.desktop.png","reports/storyboard-director-guard.latest.json","reports/storyboard-frame-dialog.desktop.first.png","reports/storyboard-frame-dialog.desktop.last.png","reports/storyboard-frame-dialog.mobile.saved.png","reports/template-making.1440.png","reports/template-saved-master.APPLICATION.png","reports/template-saved-master.GENERAL.png","reports/toolchain.latest.json","reports/ui-acceptance.desktop.png","reports/ui-acceptance.draft-import.png","reports/ui-acceptance.latest.json","reports/ui-acceptance.mobile.png","reports/ui-acceptance.production.png","reports/ux-edit.desktop.png","reports/ux-home.mobile.png","reports/ux-intake.desktop.png","reports/validation-source.latest.json","reports/video-batch-paused.mobile.png","reports/video-regenerate-2026-09-08/desktop.png","reports/video-regenerate-2026-09-08/mobile.png"]},"repository":{"id":57,"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":"image-generation","full_name":"luoanwu/image-generation","description":"","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":842356,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/image-generation/languages","html_url":"https://gitea.g-hi.com/luoanwu/image-generation","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/image-generation","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/image-generation.git","clone_url":"https://gitea.g-hi.com/luoanwu/image-generation.git","original_url":"","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":8,"open_issues_count":0,"open_pr_counter":1,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-07-06T17:04:22+08:00","updated_at":"2026-09-10T10:55:24+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
|
1789012460
|
1789012508
|
0
|
1789012460
|
1789012508
|
group: governance-${{ github.workflow }}-${{ githu group: governance-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: "true"
...
|
governance-governance.yml-refs/heads/main
|
1
|
Edit
Delete
|
|
23816
|
docs: record the illustration brief candidates rel docs: record the illustration brief candidates release...
|
57
|
5
|
governance.yml
|
182
|
5
|
0
|
refs/heads/main
|
416d9a34314fbcb00cd65866fd3f4521dd97ca9f
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"cac4dfce5420bb002137d3438e10560495d1f48f","after":"416d9a34314fbcb00cd65866fd3f4521dd97ca9f","compare_url":"https://gitea.g-hi.com/luoanwu/image-generation/compare/cac4dfce5420bb002137d3438e10560495d1f48f...416d9a34314fbcb00cd65866fd3f4521dd97ca9f","commits":[{"id":"416d9a34314fbcb00cd65866fd3f4521dd97ca9f","message":"docs: record the illustration brief candidates release\n\nrelease-20260910-plan-cand1 at cac4dfce (fingerprint 96e80feb) is deployed; five services healthy, queue healthy, 10 probes and 13 backups passed.\n\nCo-Authored-By: Claude Fable 5.1 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/416d9a34314fbcb00cd65866fd3f4521dd97ca9f","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-09T21:01:11-07:00","added":["docs/releases/2026-09-10-plan-cand1.md"],"removed":[],"modified":["docs/releases/current.md"]}],"total_commits":0,"head_commit":{"id":"416d9a34314fbcb00cd65866fd3f4521dd97ca9f","message":"docs: record the illustration brief candidates release\n\nrelease-20260910-plan-cand1 at cac4dfce (fingerprint 96e80feb) is deployed; five services healthy, queue healthy, 10 probes and 13 backups passed.\n\nCo-Authored-By: Claude Fable 5.1 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/416d9a34314fbcb00cd65866fd3f4521dd97ca9f","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-09T21:01:11-07:00","added":["docs/releases/2026-09-10-plan-cand1.md"],"removed":[],"modified":["docs/releases/current.md"]},"repository":{"id":57,"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":"image-generation","full_name":"luoanwu/image-generation","description":"","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":853042,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/image-generation/languages","html_url":"https://gitea.g-hi.com/luoanwu/image-generation","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/image-generation","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/image-generation.git","clone_url":"https://gitea.g-hi.com/luoanwu/image-generation.git","original_url":"","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":8,"open_issues_count":0,"open_pr_counter":1,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-07-06T17:04:22+08:00","updated_at":"2026-09-10T11:54:20+08:00","archived_at":"1970-01-01T08:00:00+08:00","permissions":{"admin":true,"push":true,"pull":true},"has_code":true,"has_issues":true,"internal_tracker":{"enable_time_tracker":true,"allow_only_contributors_to_track_time":true,"enable_issue_dependencies":true},"has_wiki":true,"has_pull_requests":true,"has_projects":true,"projects_mode":"all","has_releases":true,"has_packages":true,"has_actions":true,"ignore_whitespace_conflicts":false,"allow_merge_commits":true,"allow_rebase":true,"allow_rebase_explicit":true,"allow_squash_merge":true,"allow_fast_forward_only_merge":true,"allow_rebase_update":true,"allow_manual_merge":false,"autodetect_manual_merge":false,"default_delete_branch_after_merge":false,"default_merge_style":"merge","default_allow_maintainer_edit":true,"avatar_url":"","internal":false,"mirror_interval":"","object_format_name":"sha1","mirror_updated":"0001-01-01T00:00:00Z","topics":[],"licenses":[]},"pusher":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"sender":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"}}...
|
push
|
2
|
4
|
1789012876
|
1789013919
|
0
|
1789012875
|
1789013919
|
group: governance-${{ github.workflow }}-${{ githu group: governance-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: "true"
...
|
governance-governance.yml-refs/heads/main
|
1
|
Edit
Delete
|
|
23817
|
test: verify the merged brief-candidates branch at test: verify the merged brief-candidates branch at the new fingerprint...
|
57
|
5
|
governance.yml
|
183
|
5
|
0
|
refs/heads/main
|
5f5bbd7e2fc3df1771de60b488bef8528df834cb
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"416d9a34314fbcb00cd65866fd3f4521dd97ca9f","after":"5f5bbd7e2fc3df1771de60b488bef8528df834cb","compare_url":"https://gitea.g-hi.com/luoanwu/image-generation/compare/416d9a34314fbcb00cd65866fd3f4521dd97ca9f...5f5bbd7e2fc3df1771de60b488bef8528df834cb","commits":[{"id":"5f5bbd7e2fc3df1771de60b488bef8528df834cb","message":"test: verify the merged brief-candidates branch at the new fingerprint\n\nSeven heavy gates plus pnpm check pass after merging main (plan-cand1); CLAUDE.md heavy rows re-marked.\n\nCo-Authored-By: Claude Fable 5.1 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/5f5bbd7e2fc3df1771de60b488bef8528df834cb","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-09T21:19:01-07:00","added":[],"removed":[],"modified":["CLAUDE.md","reports/admin-brands.desktop.png","reports/admin-brands.mobile.png","reports/admin-mobile.png","reports/content-brief-candidates-2026-09-09/README.md","reports/content-detail.images-desktop.png","reports/content-detail.plans-desktop.png","reports/contract-consumers.latest.json","reports/creative-history-hidden.desktop.png","reports/creative-history-restore.mobile.png","reports/creative-quality.desktop.png","reports/dependency-audit.latest.json","reports/director-workbench.desktop.png","reports/governance-docs.latest.json","reports/governance.latest.json","reports/image-creation-1135.png","reports/image-creation-1440.png","reports/image-edit-1135.png","reports/image-edit-1440.png","reports/image-edit-390.png","reports/image-edit-768.png","reports/image-edit-result.png","reports/inference-acceptance.latest.json","reports/material-review-concurrency-guard.latest.json","reports/migrations.latest.json","reports/model-api-key-saved.png","reports/model-credential-error.desktop.png","reports/model-credential-error.mobile.png","reports/module-boundary.latest.json","reports/naming.latest.json","reports/order-concurrency-guard.latest.json","reports/prd-retry.mobile.png","reports/prd-review.desktop.png","reports/production-acceptance.latest.json","reports/production-delivery-released.desktop.png","reports/production-delivery-revoked.mobile.png","reports/production-pagination.desktop.png","reports/production-pagination.mobile.png","reports/production-review-preview.desktop.png","reports/production-security.latest.json","reports/production-single-tenant-create.desktop.png","reports/production-single-tenant-separation.desktop.png","reports/public-file-acceptance.latest.json","reports/public-file-integration.latest.json","reports/runtime-acceptance.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/script-acceptance.latest.json","reports/script-generation-queue.png","reports/sidecar-tests.latest.json","reports/storyboard-asset-dialog.desktop.png","reports/storyboard-asset-dialog.mobile.png","reports/storyboard-director-guard.latest.json","reports/storyboard-frame-dialog.desktop.first.png","reports/storyboard-frame-dialog.desktop.last.png","reports/storyboard-frame-dialog.mobile.saved.png","reports/template-making.1135.png","reports/template-making.1440.png","reports/template-saved-master.APPLICATION.png","reports/template-saved-master.GENERAL.png","reports/template-saved-master.SCENE.png","reports/toolchain.latest.json","reports/ui-acceptance.desktop.png","reports/ui-acceptance.draft-import.png","reports/ui-acceptance.latest.json","reports/ui-acceptance.mobile.png","reports/ux-edit.desktop.png","reports/ux-home.desktop.png","reports/ux-home.mobile.png","reports/ux-intake.desktop.png","reports/validation-source.latest.json","reports/video-batch-paused.mobile.png","reports/video-regenerate-2026-09-08/desktop.png","reports/video-regenerate-2026-09-08/mobile.png"]},{"id":"1ea8882cf39506281b3e8f0df13cdb355c967e3e","message":"Merge branch 'main' into feat/content-brief-candidates\n\n# Conflicts:\n#\tCLAUDE.md\n#\tapps/web/src/components/material-factory/ContentStudio.tsx\n#\treports/admin-brands.mobile.png\n#\treports/content-detail.output-mobile.png\n#\treports/contract-consumers.latest.json\n#\treports/creative-history-hidden.desktop.png\n#\treports/creative-history-restore.mobile.png\n#\treports/creative-quality.desktop.png\n#\treports/dependency-audit.latest.json\n#\treports/governance-docs.latest.json\n#\treports/governance.latest.json\n#\treports/image-creation-1440.png\n#\treports/image-edit-1135.png\n#\treports/image-edit-1440.png\n#\treports/image-edit-390.png\n#\treports/image-edit-768.png\n#\treports/image-edit-result.png\n#\treports/inference-acceptance.latest.json\n#\treports/material-review-concurrency-guard.latest.json\n#\treports/migrations.latest.json\n#\treports/model-api-key-saved.png\n#\treports/model-credential-error.desktop.png\n#\treports/module-boundary.latest.json\n#\treports/naming.latest.json\n#\treports/order-concurrency-guard.latest.json\n#\treports/prd-retry.mobile.png\n#\treports/prd-review.desktop.png\n#\treports/production-acceptance.latest.json\n#\treports/production-delivery-released.desktop.png\n#\treports/production-delivery-revoked.mobile.png\n#\treports/production-pagination.desktop.png\n#\treports/production-pagination.mobile.png\n#\treports/production-review-preview.desktop.png\n#\treports/production-security.latest.json\n#\treports/production-single-tenant-create.desktop.png\n#\treports/production-single-tenant-separation.desktop.png\n#\treports/public-file-acceptance.latest.json\n#\treports/public-file-integration.latest.json\n#\treports/runtime-acceptance.latest.json\n#\treports/runtime-governance.latest.json\n#\treports/schema-sync.latest.json\n#\treports/script-acceptance.latest.json\n#\treports/script-generation-queue.png\n#\treports/sidecar-tests.latest.json\n#\treports/storyboard-asset-dialog.desktop.png\n#\treports/storyboard-director-guard.latest.json\n#\treports/storyboard-frame-dialog.desktop.first.png\n#\treports/template-making.1440.png\n#\treports/template-saved-master.APPLICATION.png\n#\treports/template-saved-master.GENERAL.png\n#\treports/toolchain.latest.json\n#\treports/ui-acceptance.desktop.png\n#\treports/ui-acceptance.draft-import.png\n#\treports/ui-acceptance.latest.json\n#\treports/ux-edit.desktop.png\n#\treports/ux-intake.desktop.png\n#\treports/validation-source.latest.json\n#\treports/video-batch-paused.mobile.png\n#\treports/video-regenerate-2026-09-08/desktop.png\n#\treports/video-regenerate-2026-09-08/mobile.png\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/1ea8882cf39506281b3e8f0df13cdb355c967e3e","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-09T21:07:50-07:00","added":["docs/governance/log/2026-09-10-illustration-brief-candidates.md","docs/releases/2026-09-10-plan-cand1.md","reports/illustration-brief-candidates-2026-09-10/README.md"],"removed":[],"modified":["CLAUDE.md","apps/api-fastify/src/modules/creative-project/content.service.ts","apps/api-fastify/src/modules/creative-project/creative-project.service.ts","apps/api-fastify/test/content-workbench.integration.test.ts","apps/api-nestjs/src/creative-project/content.service.ts","apps/api-nestjs/src/creative-project/creative-project.service.ts","apps/api-nestjs/test/content-workbench.integration.test.ts","apps/web/src/components/material-factory/ContentStudio.tsx","apps/web/src/components/material-factory/content-studio.module.css","docs/product/content-creation-workbench.md","docs/releases/current.md","packages/contracts/src/content.test.ts","packages/contracts/src/content.ts","reports/admin-brands.desktop.png","reports/admin-brands.mobile.png","reports/admin-mobile.png","reports/content-detail.images-desktop.png","reports/content-detail.output-mobile.png","reports/content-detail.plans-desktop.png","reports/contract-consumers.latest.json","reports/creative-history-hidden.desktop.png","reports/creative-history-restore.mobile.png","reports/creative-quality.desktop.png","reports/dependency-audit.latest.json","reports/governance-docs.latest.json","reports/governance.latest.json","reports/image-creation-1440.png","reports/image-edit-1135.png","reports/image-edit-1440.png","reports/image-edit-390.png","reports/image-edit-768.png","reports/image-edit-result.png","reports/inference-acceptance.latest.json","reports/material-review-concurrency-guard.latest.json","reports/migrations.latest.json","reports/model-api-key-saved.png","reports/model-credential-error.desktop.png","reports/model-credential-error.mobile.png","reports/module-boundary.latest.json","reports/naming.latest.json","reports/order-concurrency-guard.latest.json","reports/prd-retry.mobile.png","reports/prd-review.desktop.png","reports/production-acceptance.latest.json","reports/production-delivery-released.desktop.png","reports/production-delivery-revoked.mobile.png","reports/production-pagination.desktop.png","reports/production-pagination.mobile.png","reports/production-review-preview.desktop.png","reports/production-security.latest.json","reports/production-single-tenant-create.desktop.png","reports/production-single-tenant-separation.desktop.png","reports/public-file-acceptance.latest.json","reports/public-file-integration.latest.json","reports/runtime-acceptance.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/script-acceptance.latest.json","reports/script-generation-queue.png","reports/sidecar-tests.latest.json","reports/storyboard-asset-dialog.desktop.png","reports/storyboard-director-guard.latest.json","reports/storyboard-frame-dialog.desktop.first.png","reports/storyboard-frame-dialog.desktop.last.png","reports/storyboard-frame-dialog.mobile.saved.png","reports/template-making.1440.png","reports/template-saved-master.APPLICATION.png","reports/template-saved-master.GENERAL.png","reports/toolchain.latest.json","reports/ui-acceptance.desktop.png","reports/ui-acceptance.draft-import.png","reports/ui-acceptance.latest.json","reports/ui-acceptance.mobile.png","reports/ui-acceptance.production.png","reports/ux-edit.desktop.png","reports/ux-home.mobile.png","reports/ux-intake.desktop.png","reports/validation-source.latest.json","reports/video-batch-paused.mobile.png","reports/video-regenerate-2026-09-08/desktop.png","reports/video-regenerate-2026-09-08/mobile.png"]},{"id":"d829bfd96ef0cf73377d098747a769fbbaa1a38a","message":"test: verify the background-polling fix at the new fingerprint\n\nSeven heavy gates plus pnpm check pass on the isolated stack; CLAUDE.md heavy rows re-marked.\n\nCo-Authored-By: Claude Fable 5.1 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/d829bfd96ef0cf73377d098747a769fbbaa1a38a","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-09T21:05:13-07:00","added":[],"removed":[],"modified":["CLAUDE.md","reports/admin-brands.mobile.png","reports/content-brief-candidates-2026-09-09/README.md","reports/content-detail.output-mobile.png","reports/contract-consumers.latest.json","reports/creative-history-hidden.desktop.png","reports/creative-history-restore.mobile.png","reports/creative-quality.desktop.png","reports/dependency-audit.latest.json","reports/director-workbench.desktop.png","reports/governance-docs.latest.json","reports/governance.latest.json","reports/image-creation-1135.png","reports/image-creation-1440.png","reports/image-edit-1135.png","reports/image-edit-1440.png","reports/image-edit-390.png","reports/image-edit-768.png","reports/image-edit-result.png","reports/inference-acceptance.latest.json","reports/material-review-concurrency-guard.latest.json","reports/migrations.latest.json","reports/model-api-key-saved.png","reports/model-credential-error.desktop.png","reports/module-boundary.latest.json","reports/naming.latest.json","reports/order-concurrency-guard.latest.json","reports/prd-retry.mobile.png","reports/prd-review.desktop.png","reports/production-acceptance.latest.json","reports/production-delivery-released.desktop.png","reports/production-delivery-revoked.mobile.png","reports/production-pagination.desktop.png","reports/production-pagination.mobile.png","reports/production-review-preview.desktop.png","reports/production-security.latest.json","reports/production-single-tenant-create.desktop.png","reports/production-single-tenant-separation.desktop.png","reports/public-file-acceptance.latest.json","reports/public-file-integration.latest.json","reports/runtime-acceptance.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/script-acceptance.latest.json","reports/script-generation-queue.png","reports/sidecar-tests.latest.json","reports/storyboard-asset-dialog.desktop.png","reports/storyboard-asset-dialog.mobile.png","reports/storyboard-director-guard.latest.json","reports/storyboard-frame-dialog.desktop.first.png","reports/template-making.1135.png","reports/template-making.1280.png","reports/template-making.1440.png","reports/template-saved-master.APPLICATION.png","reports/template-saved-master.GENERAL.png","reports/template-saved-master.SCENE.png","reports/template-types.desktop.png","reports/toolchain.latest.json","reports/ui-acceptance.desktop.png","reports/ui-acceptance.draft-import.png","reports/ui-acceptance.latest.json","reports/ux-edit.desktop.png","reports/ux-intake.desktop.png","reports/validation-source.latest.json","reports/video-batch-paused.mobile.png","reports/video-regenerate-2026-09-08/desktop.png","reports/video-regenerate-2026-09-08/mobile.png"]},{"id":"55b4b34f91af41d79bbee983f3038a393461c35b","message":"fix(web): keep polling creative operations in background panes and surface unadopted draft candidates\n\nEmbedded browser panes report the document as hidden and never focused, so\nwith refetchIntervalInBackground off the content workbench never learned that\na task had finished: no candidate dialog, editor stuck on the empty state.\nPoll in the background (2.5 s while work is live, 30 s idle) and, on the draft\nempty state, point to unadopted draft candidates.\n\nCo-Authored-By: Claude Fable 5.1 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/55b4b34f91af41d79bbee983f3038a393461c35b","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-09T21:04:34-07:00","added":[],"removed":[],"modified":["apps/web/src/components/material-factory/ContentStudio.tsx","apps/web/src/components/material-factory/creative-project-queries.ts","docs/governance/log/2026-09-09-content-brief-candidates.md","reports/content-brief-candidates-2026-09-09/README.md"]}],"total_commits":0,"head_commit":{"id":"5f5bbd7e2fc3df1771de60b488bef8528df834cb","message":"test: verify the merged brief-candidates branch at the new fingerprint\n\nSeven heavy gates plus pnpm check pass after merging main (plan-cand1); CLAUDE.md heavy rows re-marked.\n\nCo-Authored-By: Claude Fable 5.1 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/5f5bbd7e2fc3df1771de60b488bef8528df834cb","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-09T21:19:01-07:00","added":[],"removed":[],"modified":["CLAUDE.md","reports/admin-brands.desktop.png","reports/admin-brands.mobile.png","reports/admin-mobile.png","reports/content-brief-candidates-2026-09-09/README.md","reports/content-detail.images-desktop.png","reports/content-detail.plans-desktop.png","reports/contract-consumers.latest.json","reports/creative-history-hidden.desktop.png","reports/creative-history-restore.mobile.png","reports/creative-quality.desktop.png","reports/dependency-audit.latest.json","reports/director-workbench.desktop.png","reports/governance-docs.latest.json","reports/governance.latest.json","reports/image-creation-1135.png","reports/image-creation-1440.png","reports/image-edit-1135.png","reports/image-edit-1440.png","reports/image-edit-390.png","reports/image-edit-768.png","reports/image-edit-result.png","reports/inference-acceptance.latest.json","reports/material-review-concurrency-guard.latest.json","reports/migrations.latest.json","reports/model-api-key-saved.png","reports/model-credential-error.desktop.png","reports/model-credential-error.mobile.png","reports/module-boundary.latest.json","reports/naming.latest.json","reports/order-concurrency-guard.latest.json","reports/prd-retry.mobile.png","reports/prd-review.desktop.png","reports/production-acceptance.latest.json","reports/production-delivery-released.desktop.png","reports/production-delivery-revoked.mobile.png","reports/production-pagination.desktop.png","reports/production-pagination.mobile.png","reports/production-review-preview.desktop.png","reports/production-security.latest.json","reports/production-single-tenant-create.desktop.png","reports/production-single-tenant-separation.desktop.png","reports/public-file-acceptance.latest.json","reports/public-file-integration.latest.json","reports/runtime-acceptance.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/script-acceptance.latest.json","reports/script-generation-queue.png","reports/sidecar-tests.latest.json","reports/storyboard-asset-dialog.desktop.png","reports/storyboard-asset-dialog.mobile.png","reports/storyboard-director-guard.latest.json","reports/storyboard-frame-dialog.desktop.first.png","reports/storyboard-frame-dialog.desktop.last.png","reports/storyboard-frame-dialog.mobile.saved.png","reports/template-making.1135.png","reports/template-making.1440.png","reports/template-saved-master.APPLICATION.png","reports/template-saved-master.GENERAL.png","reports/template-saved-master.SCENE.png","reports/toolchain.latest.json","reports/ui-acceptance.desktop.png","reports/ui-acceptance.draft-import.png","reports/ui-acceptance.latest.json","reports/ui-acceptance.mobile.png","reports/ux-edit.desktop.png","reports/ux-home.desktop.png","reports/ux-home.mobile.png","reports/ux-intake.desktop.png","reports/validation-source.latest.json","reports/video-batch-paused.mobile.png","reports/video-regenerate-2026-09-08/desktop.png","reports/video-regenerate-2026-09-08/mobile.png"]},"repository":{"id":57,"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":"image-generation","full_name":"luoanwu/image-generation","description":"","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":762749,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/image-generation/languages","html_url":"https://gitea.g-hi.com/luoanwu/image-generation","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/image-generation","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/image-generation.git","clone_url":"https://gitea.g-hi.com/luoanwu/image-generation.git","original_url":"","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":8,"open_issues_count":0,"open_pr_counter":1,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-07-06T17:04:22+08:00","updated_at":"2026-09-10T12:01: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
|
4
|
1789013979
|
1789014020
|
0
|
1789013978
|
1789014020
|
group: governance-${{ github.workflow }}-${{ githu group: governance-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: "true"
...
|
governance-governance.yml-refs/heads/main
|
1
|
Edit
Delete
|
|
23818
|
docs: record the brief-cand1 and brief-cand2 relea docs: record the brief-cand1 and brief-cand2 releases...
|
57
|
5
|
governance.yml
|
184
|
5
|
0
|
refs/heads/main
|
672a60365549d45bb4f522c4335773425337be8e
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"5f5bbd7e2fc3df1771de60b488bef8528df834cb","after":"672a60365549d45bb4f522c4335773425337be8e","compare_url":"https://gitea.g-hi.com/luoanwu/image-generation/compare/5f5bbd7e2fc3df1771de60b488bef8528df834cb...672a60365549d45bb4f522c4335773425337be8e","commits":[{"id":"672a60365549d45bb4f522c4335773425337be8e","message":"docs: record the brief-cand1 and brief-cand2 releases\n\nCo-Authored-By: Claude Fable 5.1 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/672a60365549d45bb4f522c4335773425337be8e","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-09T21:30:03-07:00","added":["docs/releases/2026-09-10-brief-cand2.md"],"removed":[],"modified":["docs/releases/current.md"]}],"total_commits":0,"head_commit":{"id":"672a60365549d45bb4f522c4335773425337be8e","message":"docs: record the brief-cand1 and brief-cand2 releases\n\nCo-Authored-By: Claude Fable 5.1 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/672a60365549d45bb4f522c4335773425337be8e","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-09T21:30:03-07:00","added":["docs/releases/2026-09-10-brief-cand2.md"],"removed":[],"modified":["docs/releases/current.md"]},"repository":{"id":57,"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":"image-generation","full_name":"luoanwu/image-generation","description":"","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":782177,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/image-generation/languages","html_url":"https://gitea.g-hi.com/luoanwu/image-generation","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/image-generation","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/image-generation.git","clone_url":"https://gitea.g-hi.com/luoanwu/image-generation.git","original_url":"","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":8,"open_issues_count":0,"open_pr_counter":1,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-07-06T17:04:22+08:00","updated_at":"2026-09-10T12:19: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
|
1789014628
|
1789014719
|
0
|
1789014628
|
1789014719
|
group: governance-${{ github.workflow }}-${{ githu group: governance-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: "true"
...
|
governance-governance.yml-refs/heads/main
|
1
|
Edit
Delete
|
|
23819
|
test: verify the direction and requirement candida test: verify the direction and requirement candidates round...
|
57
|
5
|
governance.yml
|
185
|
5
|
0
|
refs/heads/main
|
80452a1781562b103d1781d7da679128d9583a31
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"672a60365549d45bb4f522c4335773425337be8e","after":"80452a1781562b103d1781d7da679128d9583a31","compare_url":"https://gitea.g-hi.com/luoanwu/image-generation/compare/672a60365549d45bb4f522c4335773425337be8e...80452a1781562b103d1781d7da679128d9583a31","commits":[{"id":"80452a1781562b103d1781d7da679128d9583a31","message":"test: verify the direction and requirement candidates round\n\nSeven heavy gates plus pnpm check pass on an isolated stack; CLAUDE.md heavy rows re-marked.\n\nCo-Authored-By: Claude Fable 5.1 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/80452a1781562b103d1781d7da679128d9583a31","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-09T21:38:39-07:00","added":[],"removed":[],"modified":["CLAUDE.md","reports/admin-brands.desktop.png","reports/admin-brands.mobile.png","reports/admin-mobile.png","reports/content-guide-candidates-2026-09-10/README.md","reports/contract-consumers.latest.json","reports/creative-history-hidden.desktop.png","reports/creative-history-restore.mobile.png","reports/creative-quality.desktop.png","reports/dependency-audit.latest.json","reports/director-workbench.desktop.png","reports/governance-docs.latest.json","reports/governance.latest.json","reports/image-creation-1440.png","reports/image-edit-1135.png","reports/image-edit-1440.png","reports/image-edit-390.png","reports/image-edit-768.png","reports/image-edit-result.png","reports/inference-acceptance.latest.json","reports/material-review-concurrency-guard.latest.json","reports/migrations.latest.json","reports/model-api-key-saved.png","reports/model-credential-error.desktop.png","reports/module-boundary.latest.json","reports/naming.latest.json","reports/order-concurrency-guard.latest.json","reports/prd-retry.mobile.png","reports/prd-review.desktop.png","reports/production-acceptance.latest.json","reports/production-delivery-released.desktop.png","reports/production-delivery-revoked.mobile.png","reports/production-pagination.desktop.png","reports/production-pagination.mobile.png","reports/production-review-preview.desktop.png","reports/production-security.latest.json","reports/production-single-tenant-create.desktop.png","reports/production-single-tenant-separation.desktop.png","reports/public-file-acceptance.latest.json","reports/public-file-integration.latest.json","reports/runtime-acceptance.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/script-acceptance.latest.json","reports/script-generation-queue.png","reports/sidecar-tests.latest.json","reports/storyboard-asset-dialog.desktop.png","reports/storyboard-director-guard.latest.json","reports/template-making.1135.png","reports/template-making.1280.png","reports/template-making.1440.png","reports/template-preview.templates.png","reports/template-saved-master.APPLICATION.png","reports/template-saved-master.GENERAL.png","reports/template-types.desktop.png","reports/toolchain.latest.json","reports/ui-acceptance.desktop.png","reports/ui-acceptance.draft-import.png","reports/ui-acceptance.latest.json","reports/ui-acceptance.mobile.png","reports/ui-acceptance.production.png","reports/ux-edit.desktop.png","reports/ux-home.desktop.png","reports/ux-home.mobile.png","reports/ux-intake.desktop.png","reports/validation-source.latest.json","reports/video-batch-paused.mobile.png","reports/video-regenerate-2026-09-08/desktop.png","reports/video-regenerate-2026-09-08/mobile.png"]},{"id":"7d6f6816a636dbf1304b7deac8113c00afdc7558","message":"Merge branch 'main' into feat/content-guide-candidates\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/7d6f6816a636dbf1304b7deac8113c00afdc7558","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-09T21:38:37-07:00","added":["docs/releases/2026-09-10-brief-cand2.md"],"removed":[],"modified":["docs/releases/current.md"]},{"id":"23a5b1c9af37f264fd850c04f011541203a892f3","message":"fix(web): do not read act.isPending inside the auto candidate paths\n\nThe debounced BRIEF/GUIDE submissions run inside the mutation, where the\npending flag is already true, so the guard could silently skip the request.\npendingKey and the live-operation checks remain; the manual buttons are still\ndisabled while busy. Reported by the illustration-descriptions session's UI gate.\n\nCo-Authored-By: Claude Fable 5.1 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/23a5b1c9af37f264fd850c04f011541203a892f3","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-09T21:22:25-07:00","added":[],"removed":[],"modified":["apps/web/src/components/material-factory/ContentStudio.tsx"]},{"id":"b65c69223011d7c1951702204aa51a0982f1a859","message":"Merge branch 'main' into feat/content-guide-candidates\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/b65c69223011d7c1951702204aa51a0982f1a859","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-09T21:20:07-07:00","added":[],"removed":[],"modified":["CLAUDE.md","reports/admin-brands.desktop.png","reports/admin-brands.mobile.png","reports/admin-mobile.png","reports/content-brief-candidates-2026-09-09/README.md","reports/content-detail.images-desktop.png","reports/content-detail.plans-desktop.png","reports/contract-consumers.latest.json","reports/creative-history-hidden.desktop.png","reports/creative-history-restore.mobile.png","reports/creative-quality.desktop.png","reports/dependency-audit.latest.json","reports/director-workbench.desktop.png","reports/governance-docs.latest.json","reports/governance.latest.json","reports/image-creation-1135.png","reports/image-creation-1440.png","reports/image-edit-1135.png","reports/image-edit-1440.png","reports/image-edit-390.png","reports/image-edit-768.png","reports/image-edit-result.png","reports/inference-acceptance.latest.json","reports/material-review-concurrency-guard.latest.json","reports/migrations.latest.json","reports/model-api-key-saved.png","reports/model-credential-error.desktop.png","reports/model-credential-error.mobile.png","reports/module-boundary.latest.json","reports/naming.latest.json","reports/order-concurrency-guard.latest.json","reports/prd-retry.mobile.png","reports/prd-review.desktop.png","reports/production-acceptance.latest.json","reports/production-delivery-released.desktop.png","reports/production-delivery-revoked.mobile.png","reports/production-pagination.desktop.png","reports/production-pagination.mobile.png","reports/production-review-preview.desktop.png","reports/production-security.latest.json","reports/production-single-tenant-create.desktop.png","reports/production-single-tenant-separation.desktop.png","reports/public-file-acceptance.latest.json","reports/public-file-integration.latest.json","reports/runtime-acceptance.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/script-acceptance.latest.json","reports/script-generation-queue.png","reports/sidecar-tests.latest.json","reports/storyboard-asset-dialog.desktop.png","reports/storyboard-asset-dialog.mobile.png","reports/storyboard-director-guard.latest.json","reports/storyboard-frame-dialog.desktop.first.png","reports/storyboard-frame-dialog.desktop.last.png","reports/storyboard-frame-dialog.mobile.saved.png","reports/template-making.1135.png","reports/template-making.1440.png","reports/template-saved-master.APPLICATION.png","reports/template-saved-master.GENERAL.png","reports/template-saved-master.SCENE.png","reports/toolchain.latest.json","reports/ui-acceptance.desktop.png","reports/ui-acceptance.draft-import.png","reports/ui-acceptance.latest.json","reports/ui-acceptance.mobile.png","reports/ux-edit.desktop.png","reports/ux-home.desktop.png","reports/ux-home.mobile.png","reports/ux-intake.desktop.png","reports/validation-source.latest.json","reports/video-batch-paused.mobile.png","reports/video-regenerate-2026-09-08/desktop.png","reports/video-regenerate-2026-09-08/mobile.png"]},{"id":"69834fbb080441aaabd2f441a35377fc52133ea6","message":"feat(content): propose direction and writing-requirement candidates from the brief\n\nEntering 内容方向 with an empty direction submits one GUIDE content task per\nproject (brand required, explicit re-run button). Both backends keep only\nusable directions (1-5, object entries flattened, deduped, length-capped) and\nrequirements (0-5) via the shared contentGuideSuggestionSchema; nothing usable\nis a 422. The candidate dialog offers one direction (radio) and any\nrequirements (checkboxes); adoption saves a 采用内容方向候选 revision and\nfills the step's 本次创作要求 without replacing existing text.\n\nCo-Authored-By: Claude Fable 5.1 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/69834fbb080441aaabd2f441a35377fc52133ea6","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-09T21:20:07-07:00","added":["docs/governance/log/2026-09-10-content-guide-candidates.md","reports/content-guide-candidates-2026-09-10/README.md"],"removed":[],"modified":["apps/api-fastify/src/modules/creative-project/content.service.ts","apps/api-fastify/test/content-workbench.integration.test.ts","apps/api-nestjs/src/creative-project/content.service.ts","apps/api-nestjs/test/content-workbench.integration.test.ts","apps/web/src/components/material-factory/ContentStudio.tsx","apps/web/src/components/material-factory/content-studio.module.css","docs/product/content-creation-workbench.md","packages/contracts/src/content.test.ts","packages/contracts/src/content.ts"]}],"total_commits":0,"head_commit":{"id":"80452a1781562b103d1781d7da679128d9583a31","message":"test: verify the direction and requirement candidates round\n\nSeven heavy gates plus pnpm check pass on an isolated stack; CLAUDE.md heavy rows re-marked.\n\nCo-Authored-By: Claude Fable 5.1 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/80452a1781562b103d1781d7da679128d9583a31","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-09T21:38:39-07:00","added":[],"removed":[],"modified":["CLAUDE.md","reports/admin-brands.desktop.png","reports/admin-brands.mobile.png","reports/admin-mobile.png","reports/content-guide-candidates-2026-09-10/README.md","reports/contract-consumers.latest.json","reports/creative-history-hidden.desktop.png","reports/creative-history-restore.mobile.png","reports/creative-quality.desktop.png","reports/dependency-audit.latest.json","reports/director-workbench.desktop.png","reports/governance-docs.latest.json","reports/governance.latest.json","reports/image-creation-1440.png","reports/image-edit-1135.png","reports/image-edit-1440.png","reports/image-edit-390.png","reports/image-edit-768.png","reports/image-edit-result.png","reports/inference-acceptance.latest.json","reports/material-review-concurrency-guard.latest.json","reports/migrations.latest.json","reports/model-api-key-saved.png","reports/model-credential-error.desktop.png","reports/module-boundary.latest.json","reports/naming.latest.json","reports/order-concurrency-guard.latest.json","reports/prd-retry.mobile.png","reports/prd-review.desktop.png","reports/production-acceptance.latest.json","reports/production-delivery-released.desktop.png","reports/production-delivery-revoked.mobile.png","reports/production-pagination.desktop.png","reports/production-pagination.mobile.png","reports/production-review-preview.desktop.png","reports/production-security.latest.json","reports/production-single-tenant-create.desktop.png","reports/production-single-tenant-separation.desktop.png","reports/public-file-acceptance.latest.json","reports/public-file-integration.latest.json","reports/runtime-acceptance.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/script-acceptance.latest.json","reports/script-generation-queue.png","reports/sidecar-tests.latest.json","reports/storyboard-asset-dialog.desktop.png","reports/storyboard-director-guard.latest.json","reports/template-making.1135.png","reports/template-making.1280.png","reports/template-making.1440.png","reports/template-preview.templates.png","reports/template-saved-master.APPLICATION.png","reports/template-saved-master.GENERAL.png","reports/template-types.desktop.png","reports/toolchain.latest.json","reports/ui-acceptance.desktop.png","reports/ui-acceptance.draft-import.png","reports/ui-acceptance.latest.json","reports/ui-acceptance.mobile.png","reports/ui-acceptance.production.png","reports/ux-edit.desktop.png","reports/ux-home.desktop.png","reports/ux-home.mobile.png","reports/ux-intake.desktop.png","reports/validation-source.latest.json","reports/video-batch-paused.mobile.png","reports/video-regenerate-2026-09-08/desktop.png","reports/video-regenerate-2026-09-08/mobile.png"]},"repository":{"id":57,"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":"image-generation","full_name":"luoanwu/image-generation","description":"","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":782184,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/image-generation/languages","html_url":"https://gitea.g-hi.com/luoanwu/image-generation","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/image-generation","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/image-generation.git","clone_url":"https://gitea.g-hi.com/luoanwu/image-generation.git","original_url":"","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":8,"open_issues_count":0,"open_pr_counter":1,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-07-06T17:04:22+08:00","updated_at":"2026-09-10T12:30:28+08:00","archived_at":"1970-01-01T08:00:00+08:00","permissions":{"admin":true,"push":true,"pull":true},"has_code":true,"has_issues":true,"internal_tracker":{"enable_time_tracker":true,"allow_only_contributors_to_track_time":true,"enable_issue_dependencies":true},"has_wiki":true,"has_pull_requests":true,"has_projects":true,"projects_mode":"all","has_releases":true,"has_packages":true,"has_actions":true,"ignore_whitespace_conflicts":false,"allow_merge_commits":true,"allow_rebase":true,"allow_rebase_explicit":true,"allow_squash_merge":true,"allow_fast_forward_only_merge":true,"allow_rebase_update":true,"allow_manual_merge":false,"autodetect_manual_merge":false,"default_delete_branch_after_merge":false,"default_merge_style":"merge","default_allow_maintainer_edit":true,"avatar_url":"","internal":false,"mirror_interval":"","object_format_name":"sha1","mirror_updated":"0001-01-01T00:00:00Z","topics":[],"licenses":[]},"pusher":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"sender":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"}}...
|
push
|
2
|
4
|
1789015147
|
1789015238
|
0
|
1789015145
|
1789015238
|
group: governance-${{ github.workflow }}-${{ githu group: governance-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: "true"
...
|
governance-governance.yml-refs/heads/main
|
1
|
Edit
Delete
|
|
23820
|
docs: record the guide1 release and its live check
|
57
|
5
|
governance.yml
|
186
|
5
|
0
|
refs/heads/main
|
8c3bf82bd2b356a92ff6f2ea88c9b46d8367b573
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"80452a1781562b103d1781d7da679128d9583a31","after":"8c3bf82bd2b356a92ff6f2ea88c9b46d8367b573","compare_url":"https://gitea.g-hi.com/luoanwu/image-generation/compare/80452a1781562b103d1781d7da679128d9583a31...8c3bf82bd2b356a92ff6f2ea88c9b46d8367b573","commits":[{"id":"8c3bf82bd2b356a92ff6f2ea88c9b46d8367b573","message":"docs: record the guide1 release and its live check\n\nCo-Authored-By: Claude Fable 5.1 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/8c3bf82bd2b356a92ff6f2ea88c9b46d8367b573","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-09T21:50:25-07:00","added":["docs/releases/2026-09-10-guide1.md"],"removed":[],"modified":["docs/releases/current.md","reports/content-guide-candidates-2026-09-10/README.md"]}],"total_commits":0,"head_commit":{"id":"8c3bf82bd2b356a92ff6f2ea88c9b46d8367b573","message":"docs: record the guide1 release and its live check\n\nCo-Authored-By: Claude Fable 5.1 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/8c3bf82bd2b356a92ff6f2ea88c9b46d8367b573","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-09T21:50:25-07:00","added":["docs/releases/2026-09-10-guide1.md"],"removed":[],"modified":["docs/releases/current.md","reports/content-guide-candidates-2026-09-10/README.md"]},"repository":{"id":57,"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":"image-generation","full_name":"luoanwu/image-generation","description":"","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":792996,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/image-generation/languages","html_url":"https://gitea.g-hi.com/luoanwu/image-generation","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/image-generation","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/image-generation.git","clone_url":"https://gitea.g-hi.com/luoanwu/image-generation.git","original_url":"","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":8,"open_issues_count":0,"open_pr_counter":1,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-07-06T17:04:22+08:00","updated_at":"2026-09-10T12:39:05+08:00","archived_at":"1970-01-01T08:00:00+08:00","permissions":{"admin":true,"push":true,"pull":true},"has_code":true,"has_issues":true,"internal_tracker":{"enable_time_tracker":true,"allow_only_contributors_to_track_time":true,"enable_issue_dependencies":true},"has_wiki":true,"has_pull_requests":true,"has_projects":true,"projects_mode":"all","has_releases":true,"has_packages":true,"has_actions":true,"ignore_whitespace_conflicts":false,"allow_merge_commits":true,"allow_rebase":true,"allow_rebase_explicit":true,"allow_squash_merge":true,"allow_fast_forward_only_merge":true,"allow_rebase_update":true,"allow_manual_merge":false,"autodetect_manual_merge":false,"default_delete_branch_after_merge":false,"default_merge_style":"merge","default_allow_maintainer_edit":true,"avatar_url":"","internal":false,"mirror_interval":"","object_format_name":"sha1","mirror_updated":"0001-01-01T00:00:00Z","topics":[],"licenses":[]},"pusher":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"sender":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"}}...
|
push
|
2
|
4
|
1789015849
|
1789015891
|
0
|
1789015849
|
1789015891
|
group: governance-${{ github.workflow }}-${{ githu group: governance-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: "true"
...
|
governance-governance.yml-refs/heads/main
|
1
|
Edit
Delete
|
|
23821
|
test: verify the default scene descriptions round
|
57
|
5
|
governance.yml
|
187
|
5
|
0
|
refs/heads/main
|
dcc386002801b96fd48bb5a2c7743dc84c3e80e2
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"8c3bf82bd2b356a92ff6f2ea88c9b46d8367b573","after":"dcc386002801b96fd48bb5a2c7743dc84c3e80e2","compare_url":"https://gitea.g-hi.com/luoanwu/image-generation/compare/8c3bf82bd2b356a92ff6f2ea88c9b46d8367b573...dcc386002801b96fd48bb5a2c7743dc84c3e80e2","commits":[{"id":"dcc386002801b96fd48bb5a2c7743dc84c3e80e2","message":"test: verify the default scene descriptions round\n\nSeven isolated gates and pnpm check pass at sha256:306ca1a3…; evidence in reports/illustration-default-descriptions-2026-09-10 and acceptance-artifacts/illustration-default-descriptions-2026-09-10.\n\nCo-Authored-By: Claude Fable 5.1 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/dcc386002801b96fd48bb5a2c7743dc84c3e80e2","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-09T21:52:09-07:00","added":["reports/content-detail.description-candidates-desktop.png","reports/illustration-default-descriptions-2026-09-10/README.md"],"removed":[],"modified":["CLAUDE.md","reports/admin-brands.desktop.png","reports/admin-brands.mobile.png","reports/admin-mobile.png","reports/content-detail.images-desktop.png","reports/content-detail.output-mobile.png","reports/content-detail.plans-desktop.png","reports/content-detail.review-desktop.png","reports/contract-consumers.latest.json","reports/creative-history-hidden.desktop.png","reports/creative-history-restore.mobile.png","reports/creative-quality.desktop.png","reports/dependency-audit.latest.json","reports/director-workbench.desktop.png","reports/governance-docs.latest.json","reports/governance.latest.json","reports/image-creation-1135.png","reports/image-creation-1440.png","reports/image-edit-1135.png","reports/image-edit-1440.png","reports/image-edit-390.png","reports/image-edit-768.png","reports/image-edit-result.png","reports/inference-acceptance.latest.json","reports/material-review-concurrency-guard.latest.json","reports/migrations.latest.json","reports/model-api-key-saved.png","reports/model-credential-error.desktop.png","reports/model-credential-error.mobile.png","reports/module-boundary.latest.json","reports/naming.latest.json","reports/order-concurrency-guard.latest.json","reports/prd-retry.mobile.png","reports/prd-review.desktop.png","reports/production-acceptance.latest.json","reports/production-delivery-released.desktop.png","reports/production-delivery-revoked.mobile.png","reports/production-pagination.desktop.png","reports/production-pagination.mobile.png","reports/production-review-preview.desktop.png","reports/production-security.latest.json","reports/production-single-tenant-create.desktop.png","reports/production-single-tenant-separation.desktop.png","reports/public-file-acceptance.latest.json","reports/public-file-integration.latest.json","reports/runtime-acceptance.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/script-acceptance.latest.json","reports/script-generation-queue.png","reports/sidecar-tests.latest.json","reports/storyboard-asset-dialog.desktop.png","reports/storyboard-director-guard.latest.json","reports/storyboard-frame-dialog.desktop.first.png","reports/storyboard-frame-dialog.mobile.saved.png","reports/template-making.1135.png","reports/template-making.1440.png","reports/template-preview.templates.png","reports/template-saved-master.APPLICATION.png","reports/template-saved-master.GENERAL.png","reports/template-saved-master.SCENE.png","reports/template-types.desktop.png","reports/toolchain.latest.json","reports/ui-acceptance.desktop.png","reports/ui-acceptance.draft-import.png","reports/ui-acceptance.latest.json","reports/ui-acceptance.mobile.png","reports/ui-acceptance.production.png","reports/ux-edit.desktop.png","reports/ux-home.desktop.png","reports/ux-home.mobile.png","reports/ux-intake.desktop.png","reports/validation-source.latest.json","reports/video-batch-paused.mobile.png","reports/video-regenerate-2026-09-08/desktop.png","reports/video-regenerate-2026-09-08/mobile.png"]},{"id":"d945e304e4d8c94f481cbffae037bdb87172fe23","message":"feat(content): propose default scene descriptions for every slot when the plan step opens\n\nEntering 配图方案 from 文案就绪 submits one IMAGE_DESCRIPTIONS content task for all saved slots (once per version, only while a slot still lacks a description); the model returns a JSON object keyed by slot id, parsed leniently and only for known slots, and the candidate dialog pre-ticks slots without a user decision. Removes act.isPending from the automatic BRIEF/description guards: inside the mutation it already reads true and silently skipped the request in a real browser. UI gate gains a local chat-completions fixture and covers both automatic paths.\n\nCo-Authored-By: Claude Fable 5.1 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/d945e304e4d8c94f481cbffae037bdb87172fe23","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-09T21:28:44-07:00","added":[],"removed":[],"modified":["apps/api-fastify/src/modules/creative-project/content.service.ts","apps/api-fastify/test/content-workbench.integration.test.ts","apps/api-nestjs/src/creative-project/content.service.ts","apps/api-nestjs/test/content-workbench.integration.test.ts","apps/web/src/components/material-factory/ContentStudio.tsx","apps/web/src/components/material-factory/content-studio.module.css","docs/governance/log/2026-09-10-illustration-brief-candidates.md","docs/product/content-creation-workbench.md","packages/contracts/src/content.test.ts","packages/contracts/src/content.ts","scripts/check-ui-acceptance.mjs","scripts/lib/content-ui-acceptance.mjs","scripts/lib/storyboard-ui-fixture.mjs"]}],"total_commits":0,"head_commit":{"id":"dcc386002801b96fd48bb5a2c7743dc84c3e80e2","message":"test: verify the default scene descriptions round\n\nSeven isolated gates and pnpm check pass at sha256:306ca1a3…; evidence in reports/illustration-default-descriptions-2026-09-10 and acceptance-artifacts/illustration-default-descriptions-2026-09-10.\n\nCo-Authored-By: Claude Fable 5.1 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/dcc386002801b96fd48bb5a2c7743dc84c3e80e2","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-09T21:52:09-07:00","added":["reports/content-detail.description-candidates-desktop.png","reports/illustration-default-descriptions-2026-09-10/README.md"],"removed":[],"modified":["CLAUDE.md","reports/admin-brands.desktop.png","reports/admin-brands.mobile.png","reports/admin-mobile.png","reports/content-detail.images-desktop.png","reports/content-detail.output-mobile.png","reports/content-detail.plans-desktop.png","reports/content-detail.review-desktop.png","reports/contract-consumers.latest.json","reports/creative-history-hidden.desktop.png","reports/creative-history-restore.mobile.png","reports/creative-quality.desktop.png","reports/dependency-audit.latest.json","reports/director-workbench.desktop.png","reports/governance-docs.latest.json","reports/governance.latest.json","reports/image-creation-1135.png","reports/image-creation-1440.png","reports/image-edit-1135.png","reports/image-edit-1440.png","reports/image-edit-390.png","reports/image-edit-768.png","reports/image-edit-result.png","reports/inference-acceptance.latest.json","reports/material-review-concurrency-guard.latest.json","reports/migrations.latest.json","reports/model-api-key-saved.png","reports/model-credential-error.desktop.png","reports/model-credential-error.mobile.png","reports/module-boundary.latest.json","reports/naming.latest.json","reports/order-concurrency-guard.latest.json","reports/prd-retry.mobile.png","reports/prd-review.desktop.png","reports/production-acceptance.latest.json","reports/production-delivery-released.desktop.png","reports/production-delivery-revoked.mobile.png","reports/production-pagination.desktop.png","reports/production-pagination.mobile.png","reports/production-review-preview.desktop.png","reports/production-security.latest.json","reports/production-single-tenant-create.desktop.png","reports/production-single-tenant-separation.desktop.png","reports/public-file-acceptance.latest.json","reports/public-file-integration.latest.json","reports/runtime-acceptance.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/script-acceptance.latest.json","reports/script-generation-queue.png","reports/sidecar-tests.latest.json","reports/storyboard-asset-dialog.desktop.png","reports/storyboard-director-guard.latest.json","reports/storyboard-frame-dialog.desktop.first.png","reports/storyboard-frame-dialog.mobile.saved.png","reports/template-making.1135.png","reports/template-making.1440.png","reports/template-preview.templates.png","reports/template-saved-master.APPLICATION.png","reports/template-saved-master.GENERAL.png","reports/template-saved-master.SCENE.png","reports/template-types.desktop.png","reports/toolchain.latest.json","reports/ui-acceptance.desktop.png","reports/ui-acceptance.draft-import.png","reports/ui-acceptance.latest.json","reports/ui-acceptance.mobile.png","reports/ui-acceptance.production.png","reports/ux-edit.desktop.png","reports/ux-home.desktop.png","reports/ux-home.mobile.png","reports/ux-intake.desktop.png","reports/validation-source.latest.json","reports/video-batch-paused.mobile.png","reports/video-regenerate-2026-09-08/desktop.png","reports/video-regenerate-2026-09-08/mobile.png"]},"repository":{"id":57,"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":"image-generation","full_name":"luoanwu/image-generation","description":"","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":793012,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/image-generation/languages","html_url":"https://gitea.g-hi.com/luoanwu/image-generation","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/image-generation","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/image-generation.git","clone_url":"https://gitea.g-hi.com/luoanwu/image-generation.git","original_url":"","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":8,"open_issues_count":0,"open_pr_counter":1,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-07-06T17:04:22+08:00","updated_at":"2026-09-10T12:50:49+08:00","archived_at":"1970-01-01T08:00:00+08:00","permissions":{"admin":true,"push":true,"pull":true},"has_code":true,"has_issues":true,"internal_tracker":{"enable_time_tracker":true,"allow_only_contributors_to_track_time":true,"enable_issue_dependencies":true},"has_wiki":true,"has_pull_requests":true,"has_projects":true,"projects_mode":"all","has_releases":true,"has_packages":true,"has_actions":true,"ignore_whitespace_conflicts":false,"allow_merge_commits":true,"allow_rebase":true,"allow_rebase_explicit":true,"allow_squash_merge":true,"allow_fast_forward_only_merge":true,"allow_rebase_update":true,"allow_manual_merge":false,"autodetect_manual_merge":false,"default_delete_branch_after_merge":false,"default_merge_style":"merge","default_allow_maintainer_edit":true,"avatar_url":"","internal":false,"mirror_interval":"","object_format_name":"sha1","mirror_updated":"0001-01-01T00:00:00Z","topics":[],"licenses":[]},"pusher":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"sender":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"}}...
|
push
|
2
|
4
|
1789016249
|
1789016339
|
0
|
1789016248
|
1789016339
|
group: governance-${{ github.workflow }}-${{ githu group: governance-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: "true"
...
|
governance-governance.yml-refs/heads/main
|
1
|
Edit
Delete
|
|
23436
|
docs: refresh published SHA snapshot
|
64
|
5
|
governance.yml
|
1
|
5
|
0
|
refs/heads/main
|
07bdfd6b5c1898d76a113986ab5a6e7ade243839
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"0000000000000000000000000000000000000000","after":"07bdfd6b5c1898d76a113986ab5a6e7ade243839","compare_url":"https://gitea.g-hi.com/","commits":[{"id":"07bdfd6b5c1898d76a113986ab5a6e7ade243839","message":"docs: refresh published SHA snapshot\n","url":"https://gitea.g-hi.com/luoanwu/voice-conversion/commit/07bdfd6b5c1898d76a113986ab5a6e7ade243839","author":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"verification":null,"timestamp":"2026-07-21T23:33:33-07:00","added":[],"removed":[],"modified":["CLAUDE.md","reports/docs-truth.latest.json","reports/governance-docs.latest.json"]},{"id":"515f82aceaa7057454f2b135a8c82e980cef442d","message":"feat(svc): 音色军火库三件套——CFM/CFG 全链旋钮 + 参考自动去混响 + 多段拼接\n\n- nSteps/cfgScale:contracts 限幅 coerce → cover_jobs 增量列(迁移)→ 双后端\n 持久化+worker 透传 → sidecar 表单 → 前端「高级参数」区(含一直未露出的移调)\n- 音色参考默认走 分离+去混响 增强链(enhance_timbre 可关);干录音≈无损通过\n- build_prompt_multiseg:按静音切段→时长×能量排序→时间序 50ms 交叉淡化拼接,\n 合成用例验证三段唱段拿满 29.9s、段间静音全剔除(单窗口法会夹带静音)\n- 门禁:check exit 0 / runtime 87 tests(地板 87)/ ui 6 用例;参数贯通冒烟\n 实证(nSteps=8 存库→sidecar 接收;越界 400;垃圾文件秒级人话错误)\n\nCo-Authored-By: Claude Fable 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/voice-conversion/commit/515f82aceaa7057454f2b135a8c82e980cef442d","author":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"verification":null,"timestamp":"2026-07-21T23:32:27-07:00","added":["apps/api-fastify/prisma/migrations/20260722100000_cover_job_infer_params/migration.sql","apps/api-nestjs/prisma/migrations/20260722100000_cover_job_infer_params/migration.sql","reports/ui-acceptance-svc-files/ui-acceptance-mrvpbprt/jobs/dec89f00-288c-4793-a3e6-83f87e8a55d7/song.wav","reports/ui-acceptance-svc-files/ui-acceptance-mrvpbprt/timbres/a84c1bc4-8b4e-4911-9c75-8fd0271f886c.wav","reports/ui-acceptance-svc-files/ui-acceptance-mrvpbprt/timbres/db8e34cb-e986-4c76-81d4-f9aba530afcd.wav"],"removed":[],"modified":["CLAUDE.md","apps/api-fastify/prisma/schema.prisma","apps/api-fastify/src/modules/svc/cover-jobs.service.ts","apps/api-fastify/src/modules/svc/sidecar.client.ts","apps/api-nestjs/prisma/schema.prisma","apps/api-nestjs/src/svc/cover-jobs.service.ts","apps/api-nestjs/src/svc/sidecar.client.ts","apps/web/src/components/SvcPanel.tsx","apps/web/src/lib/api.ts","docs/domain/svc-cover-blueprint.md","packages/contracts/src/cover.test.ts","packages/contracts/src/cover.ts","reports/baseline.json","reports/contract-consumers.latest.json","reports/docs-truth.latest.json","reports/dual-backend-parity.latest.json","reports/governance-docs.latest.json","reports/governance.latest.json","reports/migrations.latest.json","reports/naming.latest.json","reports/order-concurrency-guard.latest.json","reports/runtime-acceptance.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/ui-acceptance.latest.json","reports/validation-source.latest.json","sidecars/soulx-singer/__pycache__/svc_pipeline.cpython-310.pyc","sidecars/soulx-singer/server.py","sidecars/soulx-singer/svc_pipeline.py"]},{"id":"8c2000bfc0f0f515f3e85cc32184c5e64aeeb1c8","message":"feat(svc): 音色获取质量三连修——录音关通话处理 + 参考智能选段 + 上限30s\n\n- 浏览器录音显式关闭 echoCancellation/noiseSuppression/autoGainControl:\n 通话向处理会削唱声谐波/抽压动态,是音色相似度的隐形杀手\n- sidecar prepare_timbre 智能选段:去首尾静音 + 选「有声占比×能量」最高的\n 连续窗口(合成用例验证:25s 静音开头场景有效信息 2.4×于盲取开头)\n- 音色参考上限 20s→30s;UI 文案建议 20-30 秒清唱;蓝图已知约束同步\n\ncheck:ui 6/6 全绿(假麦克风带新约束)\n\nCo-Authored-By: Claude Fable 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/voice-conversion/commit/8c2000bfc0f0f515f3e85cc32184c5e64aeeb1c8","author":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"verification":null,"timestamp":"2026-07-21T23:20:33-07:00","added":[".agents/skills/business-module-intake/SKILL.md",".codex/agents/acceptance-runner.toml",".codex/agents/module-blueprint.toml","reports/ui-acceptance-svc-files/ui-acceptance-mrvp0i9x/jobs/721ef856-6cc6-4a99-8791-40ebb6a2f621/song.wav","reports/ui-acceptance-svc-files/ui-acceptance-mrvp0i9x/timbres/3ba94b55-4664-4066-9c03-8ba48a8f1a6f.wav","reports/ui-acceptance-svc-files/ui-acceptance-mrvp0i9x/timbres/fab7db0b-8d46-4586-a881-633467fe20da.wav"],"removed":[],"modified":["CLAUDE.md","apps/web/src/components/SvcPanel.tsx","apps/web/src/lib/audio-record.ts","docs/domain/svc-cover-blueprint.md","reports/contract-consumers.latest.json","reports/docs-truth.latest.json","reports/dual-backend-parity.latest.json","reports/governance-docs.latest.json","reports/governance.latest.json","reports/migrations.latest.json","reports/naming.latest.json","reports/order-concurrency-guard.latest.json","reports/runtime-acceptance.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/ui-acceptance.latest.json","reports/validation-source.latest.json","sidecars/soulx-singer/__pycache__/svc_pipeline.cpython-310.pyc","sidecars/soulx-singer/svc_pipeline.py"]},{"id":"e019e32157a468c1e93b874228ee37bf39989c9f","message":"docs: 发布快照登记双远端状态(GitHub 已核对,Gitea 待建仓)\n\nCo-Authored-By: Claude Fable 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/voice-conversion/commit/e019e32157a468c1e93b874228ee37bf39989c9f","author":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"verification":null,"timestamp":"2026-07-21T22:27:08-07:00","added":[],"removed":[],"modified":["CLAUDE.md"]},{"id":"6614c0cee2254d7cf2c4e081e816642cc2c8aff7","message":"docs: 发布状态快照登记首提交 b13df4a(远端待建立)\n\nCo-Authored-By: Claude Fable 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/voice-conversion/commit/6614c0cee2254d7cf2c4e081e816642cc2c8aff7","author":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"verification":null,"timestamp":"2026-07-21T22:18:59-07:00","added":[],"removed":[],"modified":["CLAUDE.md"]}],"total_commits":0,"head_commit":{"id":"07bdfd6b5c1898d76a113986ab5a6e7ade243839","message":"docs: refresh published SHA snapshot\n","url":"https://gitea.g-hi.com/luoanwu/voice-conversion/commit/07bdfd6b5c1898d76a113986ab5a6e7ade243839","author":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"verification":null,"timestamp":"2026-07-21T23:33:33-07:00","added":[],"removed":[],"modified":["CLAUDE.md","reports/docs-truth.latest.json","reports/governance-docs.latest.json"]},"repository":{"id":64,"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":"voice-conversion","full_name":"luoanwu/voice-conversion","description":"SoulX-Singer personal singing voice conversion platform","empty":false,"private":true,"fork":false,"template":false,"mirror":false,"size":27,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/voice-conversion/languages","html_url":"https://gitea.g-hi.com/luoanwu/voice-conversion","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/voice-conversion","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/voice-conversion.git","clone_url":"https://gitea.g-hi.com/luoanwu/voice-conversion.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-07-22T14:37:12+08:00","updated_at":"2026-07-22T14:37: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
|
3
|
5
|
1784702256
|
1784702338
|
0
|
1784702255
|
1784702338
|
group: governance-${{ github.workflow }}-${{ githu group: governance-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: "true"
...
|
governance-governance.yml-refs/heads/main
|
1
|
Edit
Delete
|
|
23454
|
初始提交:SongFormer 结构时间歌词行(治理底座 + 双阶段流水线 + 复核工作台)
|
67
|
5
|
governance.yml
|
1
|
5
|
0
|
refs/heads/main
|
3f76d2e5e9efe72c7ebe9d9faa2f335ccd2dbf4f
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"0000000000000000000000000000000000000000","after":"3f76d2e5e9efe72c7ebe9d9faa2f335ccd2dbf4f","compare_url":"https://gitea.g-hi.com/","commits":[{"id":"3f76d2e5e9efe72c7ebe9d9faa2f335ccd2dbf4f","message":"初始提交:SongFormer 结构时间歌词行(治理底座 + 双阶段流水线 + 复核工作台)\n\n- 基础框架迁移(git archive 受管文件 + 身份改造 + 三级门禁,静态 pnpm check 全绿)\n- phase1 结构→歌词行全局单调 DP 对齐:以官方歌词为准强制覆盖、非演唱结构防幻听先验、\n 六语种语音层(拼音/jyutping/kakasi读音/jamo/metaphone/拉丁)、多块投票定语言、\n 异体字读音等价;phase2 MMS 三句滑窗 + VAD 尾校验产出行/字级时间\n- 四模型本地部署(SongFormer/Qwen3-ASR-1.7B/mms-fa/HTDemucs,权重不进 git,\n manifest SHA256 + check:model-assets 门禁 + smoke 证据)\n- Web 复核工作台 /review:载入/一键执行/重跑、试听/连续播放/逐字对比、问题行过滤、\n 语言徽标、错配警示;run_song 一键编排(缺歌声自动分离,产物落原目录复用)\n- pytest 48/48;真歌验证:晴天×3路径、后来、日语/粤语曲目(精度未做人工金标验收)\n\nCo-Authored-By: Claude Fable 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/songformer-structure-lyrics/commit/3f76d2e5e9efe72c7ebe9d9faa2f335ccd2dbf4f","author":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"verification":null,"timestamp":"2026-07-27T23:15:09-07:00","added":[".agents/skills/frontend-api-react/SKILL.md",".agents/skills/frontend-view-react/SKILL.md",".agents/skills/frontend-view-react/references/view-templates.md",".agents/skills/fullstack-7layer-react/SKILL.md",".agents/skills/fullstack-7layer-react/references/fullstack-react-templates.md",".agents/skills/zustand-store/SKILL.md",".claude/agents/acceptance-runner.md",".claude/agents/module-blueprint.md",".claude/launch.json",".claude/skills/business-module-intake/SKILL.md",".claude/skills/frontend-api-react/SKILL.md",".claude/skills/frontend-view-react/SKILL.md",".claude/skills/frontend-view-react/references/view-templates.md",".claude/skills/fullstack-7layer-react/SKILL.md",".claude/skills/fullstack-7layer-react/references/fullstack-react-templates.md",".claude/skills/zustand-store/SKILL.md",".github/pull_request_template.md",".github/workflows/governance.yml",".gitignore","AGENTS.md","CLAUDE.md","README.md","apps/api-fastify/.env.example","apps/api-fastify/.gitignore","apps/api-fastify/package.json","apps/api-fastify/pnpm-lock.yaml","apps/api-fastify/prisma/migrations/20260608150500_init/migration.sql","apps/api-fastify/prisma/migrations/20260705080000_outbox_dead_letter/migration.sql","apps/api-fastify/prisma/migrations/migration_lock.toml","apps/api-fastify/prisma/schema.prisma","apps/api-fastify/src/app.ts","apps/api-fastify/src/lib/orderMachine.ts","apps/api-fastify/src/lib/statemachine.ts","apps/api-fastify/src/modules/orders/orders.service.ts","apps/api-fastify/src/modules/tenant.ts","apps/api-fastify/src/modules/users/users.service.ts","apps/api-fastify/src/plugins/events.ts","apps/api-fastify/src/plugins/outbox.ts","apps/api-fastify/src/plugins/prisma.ts","apps/api-fastify/src/plugins/queue.ts","apps/api-fastify/src/plugins/redis.ts","apps/api-fastify/src/routes/health.ts","apps/api-fastify/src/routes/jobs.ts","apps/api-fastify/src/routes/orders.ts","apps/api-fastify/src/routes/sse.ts","apps/api-fastify/src/routes/users.ts","apps/api-fastify/src/routes/ws.ts","apps/api-fastify/src/server.ts","apps/api-fastify/src/types.ts","apps/api-fastify/test/http.acceptance.test.ts","apps/api-fastify/test/orders.integration.test.ts","apps/api-fastify/test/outbox.deadletter.test.ts","apps/api-fastify/test/realtime.tenant.test.ts","apps/api-fastify/tsconfig.json","apps/api-fastify/vitest.config.ts","apps/api-nestjs/.env.example","apps/api-nestjs/.gitignore","apps/api-nestjs/docker-compose.yml","apps/api-nestjs/nest-cli.json","apps/api-nestjs/package.json","apps/api-nestjs/pnpm-lock.yaml","apps/api-nestjs/prisma/migrations/20260608150500_init/migration.sql","apps/api-nestjs/prisma/migrations/20260705080000_outbox_dead_letter/migration.sql","apps/api-nestjs/prisma/migrations/migration_lock.toml","apps/api-nestjs/prisma/schema.prisma","apps/api-nestjs/prisma/seed.ts","apps/api-nestjs/src/app.module.ts","apps/api-nestjs/src/common/envelope.ts","apps/api-nestjs/src/common/tenant.decorator.ts","apps/api-nestjs/src/common/zod-validation.pipe.ts","apps/api-nestjs/src/create-app.ts","apps/api-nestjs/src/events/event-bus.service.ts","apps/api-nestjs/src/events/events.gateway.ts","apps/api-nestjs/src/events/events.module.ts","apps/api-nestjs/src/events/fanout.service.ts","apps/api-nestjs/src/events/outbox-dispatcher.service.ts","apps/api-nestjs/src/health/health.controller.ts","apps/api-nestjs/src/health/health.module.ts","apps/api-nestjs/src/main.ts","apps/api-nestjs/src/orders/orders.controller.ts","apps/api-nestjs/src/orders/orders.module.ts","apps/api-nestjs/src/orders/orders.service.ts","apps/api-nestjs/src/prisma/prisma.module.ts","apps/api-nestjs/src/prisma/prisma.service.ts","apps/api-nestjs/src/queue/jobs.controller.ts","apps/api-nestjs/src/queue/jobs.processor.ts","apps/api-nestjs/src/queue/queue.module.ts","apps/api-nestjs/src/queue/queue.types.ts","apps/api-nestjs/src/redis/redis.module.ts","apps/api-nestjs/src/sse/sse.controller.ts","apps/api-nestjs/src/sse/sse.module.ts","apps/api-nestjs/src/statemachine/index.ts","apps/api-nestjs/src/statemachine/order.machine.ts","apps/api-nestjs/src/statemachine/statemachine.engine.ts","apps/api-nestjs/src/statemachine/statemachine.types.ts","apps/api-nestjs/src/users/users.controller.ts","apps/api-nestjs/src/users/users.module.ts","apps/api-nestjs/src/users/users.service.ts","apps/api-nestjs/test/http.acceptance.test.ts","apps/api-nestjs/test/orders.integration.test.ts","apps/api-nestjs/test/outbox.deadletter.test.ts","apps/api-nestjs/test/realtime.tenant.test.ts","apps/api-nestjs/tsconfig.build.json","apps/api-nestjs/tsconfig.json","apps/api-nestjs/vitest.config.ts","apps/web/.env.example","apps/web/.gitignore","apps/web/components.json","apps/web/e2e/acceptance.spec.ts","apps/web/eslint.config.mjs","apps/web/next.config.ts","apps/web/package.json","apps/web/playwright.config.ts","apps/web/pnpm-lock.yaml","apps/web/postcss.config.js","apps/web/src/app/api/review/audio/route.ts","apps/web/src/app/api/review/browse/route.ts","apps/web/src/app/api/review/route.ts","apps/web/src/app/api/review/run/route.ts","apps/web/src/app/globals.css","apps/web/src/app/layout.tsx","apps/web/src/app/page.tsx","apps/web/src/app/review/page.tsx","apps/web/src/components/EventFeed.tsx","apps/web/src/components/OrdersPanel.tsx","apps/web/src/components/RealtimeBar.tsx","apps/web/src/components/UsersPanel.tsx","apps/web/src/components/ui/badge.tsx","apps/web/src/components/ui/button.tsx","apps/web/src/components/ui/card.tsx","apps/web/src/components/ui/input.tsx","apps/web/src/components/ui/label.tsx","apps/web/src/components/ui/separator.tsx","apps/web/src/hooks/useRealtime.ts","apps/web/src/lib/api.ts","apps/web/src/lib/providers.tsx","apps/web/src/lib/types.ts","apps/web/src/lib/utils.ts","apps/web/src/store/realtime.ts","apps/web/src/store/useAppStore.ts","apps/web/tailwind.config.ts","apps/web/tsconfig.json","docs/README.md","docs/adr/0001-use-typescript-fullstack.md","docs/adr/0002-use-nextjs-app-router.md","docs/adr/0003-use-nestjs-with-fastify-adapter.md","docs/adr/0004-use-postgresql.md","docs/adr/0005-use-prisma.md","docs/adr/0006-realtime-sse-and-websocket.md","docs/adr/0007-use-bullmq-queue.md","docs/adr/0008-monorepo-pnpm-turborepo.md","docs/adr/0009-dual-backend-governance-parity.md","docs/adr/README.md","docs/domain-glossary.md","docs/domain/owner-matrix.md","docs/domain/structure-lyrics-phase1-blueprint.md","docs/governance-experience.md","docs/migration-notes.md","docs/standards/api-standard.md","docs/standards/backend-standard.md","docs/standards/database-standard.md","docs/standards/frontend-standard.md","docs/standards/git-standard.md","docs/standards/naming-standard.md","docs/standards/review-standard.md","models/model-assets.v1.json","package.json","packages/config/eslint/base.mjs","packages/config/package.json","packages/config/prettier/index.json","packages/config/tsconfig/base.json","packages/config/tsconfig/nextjs.json","packages/config/tsconfig/node.json","packages/contracts/package.json","packages/contracts/src/contracts.test.ts","packages/contracts/src/index.ts","packages/contracts/src/order.ts","packages/contracts/src/realtime.ts","packages/contracts/src/statemachine.test.ts","packages/contracts/src/statemachine.ts","packages/contracts/src/tenant.ts","packages/contracts/src/user.ts","packages/contracts/tsconfig.json","pnpm-lock.yaml","pnpm-workspace.yaml","reports/baseline.json","reports/contract-consumers.latest.json","reports/docs-truth.latest.json","reports/dual-backend-parity.latest.json","reports/governance-docs.latest.json","reports/governance.latest.json","reports/migrations.latest.json","reports/model-assets.latest.json","reports/model-evidence/htdemucs-smoke.latest.json","reports/model-evidence/mms-fa-smoke.latest.json","reports/model-evidence/qwen3-asr-smoke.latest.json","reports/model-evidence/structure-smoke.latest.json","reports/naming.latest.json","reports/order-concurrency-guard.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/validation-source.latest.json","scripts/check-contract-consumers.mjs","scripts/check-docs-truth.mjs","scripts/check-dual-backend-parity.mjs","scripts/check-governance-docs.mjs","scripts/check-migrations.mjs","scripts/check-model-assets.mjs","scripts/check-naming.mjs","scripts/check-order-concurrency-guard.mjs","scripts/check-runtime-acceptance.mjs","scripts/check-schema-sync.mjs","scripts/check-ui-acceptance.mjs","scripts/check-validation-source.mjs","scripts/governance-report.mjs","services/structure_lyrics/README.md","services/structure_lyrics/examples/demo_song/asr.json","services/structure_lyrics/examples/demo_song/lyrics.txt","services/structure_lyrics/examples/demo_song/structure.json","services/structure_lyrics/phase1/__init__.py","services/structure_lyrics/phase1/align.py","services/structure_lyrics/phase1/asr.py","services/structure_lyrics/phase1/audio.py","services/structure_lyrics/phase1/cli.py","services/structure_lyrics/phase1/lyrics.py","services/structure_lyrics/phase1/models.py","services/structure_lyrics/phase1/pipeline.py","services/structure_lyrics/phase1/similarity.py","services/structure_lyrics/phase1/structure.py","services/structure_lyrics/phase1/textnorm.py","services/structure_lyrics/phase2/__init__.py","services/structure_lyrics/phase2/audio_io.py","services/structure_lyrics/phase2/backend.py","services/structure_lyrics/phase2/cli.py","services/structure_lyrics/phase2/pipeline.py","services/structure_lyrics/phase2/refine.py","services/structure_lyrics/requirements.txt","services/structure_lyrics/run_song.py","services/structure_lyrics/tests/test_align.py","services/structure_lyrics/tests/test_language.py","services/structure_lyrics/tests/test_multilang.py","services/structure_lyrics/tests/test_phase2.py","tsconfig.base.json","turbo.json","workers/demucs/requirements_demucs.txt","workers/demucs/run_separate.py","workers/mms-fa/README.md","workers/mms-fa/align_tasks.py","workers/mms-fa/requirements_mms_fa.txt","workers/mms-fa/run_mms_fa.py","workers/qwen3-asr/README.md","workers/qwen3-asr/requirements_qwen3_asr.txt","workers/qwen3-asr/run_qwen3_asr.py","workers/qwen3-asr/testdata/asr_zh.txt","workers/qwen3-asr/testdata/asr_zh.wav","workers/qwen3-asr/vendor/qwen3_asr/__init__.py","workers/qwen3-asr/vendor/qwen3_asr/align/__init__.py","workers/qwen3-asr/vendor/qwen3_asr/align/boundary.py","workers/qwen3-asr/vendor/qwen3_asr/align/chars.py","workers/qwen3-asr/vendor/qwen3_asr/align/monotonic.py","workers/qwen3-asr/vendor/qwen3_asr/align/observation.py","workers/qwen3-asr/vendor/qwen3_asr/align/pcenter.py","workers/qwen3-asr/vendor/qwen3_asr/align/pipeline.py","workers/qwen3-asr/vendor/qwen3_asr/align/progress.py","workers/qwen3-asr/vendor/qwen3_asr/align/tail.py","workers/qwen3-asr/vendor/qwen3_asr/align/text.py","workers/qwen3-asr/vendor/qwen3_asr/align/windows.py","workers/qwen3-asr/vendor/qwen3_asr/align/wordless.py","workers/qwen3-asr/vendor/qwen3_asr/align_cli.py","workers/qwen3-asr/vendor/qwen3_asr/audio.py","workers/qwen3-asr/vendor/qwen3_asr/cache.py","workers/qwen3-asr/vendor/qwen3_asr/cli.py","workers/qwen3-asr/vendor/qwen3_asr/config.py","workers/qwen3-asr/vendor/qwen3_asr/diagnostics_cli.py","workers/qwen3-asr/vendor/qwen3_asr/engine.py","workers/qwen3-asr/vendor/qwen3_asr/forced_aligner.py","workers/qwen3-asr/vendor/qwen3_asr/service.py","workers/qwen3-asr/vendor/qwen3_asr/stream.py","workers/qwen3-asr/vendor/qwen3_asr/stream_cli.py","workers/qwen3-asr/vendor/qwen3_asr/structure.py","workers/qwen3-asr/vendor/qwen3_asr/textutil.py","workers/qwen3-asr/vendor/qwen3_asr/unowned_voice_review.py","workers/qwen3-asr/vendor/qwen3_asr/unowned_voice_review_cli.py","workers/qwen3-asr/vendor/qwen3_asr/unowned_voice_score.py","workers/qwen3-asr/vendor/qwen3_asr/unowned_voice_score_cli.py","workers/qwen3-asr/vendor/qwen3_asr/voice_diagnostics.py","workers/structure/README.md","workers/structure/requirements_structure.txt","workers/structure/run_structure.py","workers/structure/vendor/wav2vec2-conformer-rope-large-960h-ft.config.json"],"removed":[],"modified":[]}],"total_commits":0,"head_commit":{"id":"3f76d2e5e9efe72c7ebe9d9faa2f335ccd2dbf4f","message":"初始提交:SongFormer 结构时间歌词行(治理底座 + 双阶段流水线 + 复核工作台)\n\n- 基础框架迁移(git archive 受管文件 + 身份改造 + 三级门禁,静态 pnpm check 全绿)\n- phase1 结构→歌词行全局单调 DP 对齐:以官方歌词为准强制覆盖、非演唱结构防幻听先验、\n 六语种语音层(拼音/jyutping/kakasi读音/jamo/metaphone/拉丁)、多块投票定语言、\n 异体字读音等价;phase2 MMS 三句滑窗 + VAD 尾校验产出行/字级时间\n- 四模型本地部署(SongFormer/Qwen3-ASR-1.7B/mms-fa/HTDemucs,权重不进 git,\n manifest SHA256 + check:model-assets 门禁 + smoke 证据)\n- Web 复核工作台 /review:载入/一键执行/重跑、试听/连续播放/逐字对比、问题行过滤、\n 语言徽标、错配警示;run_song 一键编排(缺歌声自动分离,产物落原目录复用)\n- pytest 48/48;真歌验证:晴天×3路径、后来、日语/粤语曲目(精度未做人工金标验收)\n\nCo-Authored-By: Claude Fable 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/songformer-structure-lyrics/commit/3f76d2e5e9efe72c7ebe9d9faa2f335ccd2dbf4f","author":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"verification":null,"timestamp":"2026-07-27T23:15:09-07:00","added":[".agents/skills/frontend-api-react/SKILL.md",".agents/skills/frontend-view-react/SKILL.md",".agents/skills/frontend-view-react/references/view-templates.md",".agents/skills/fullstack-7layer-react/SKILL.md",".agents/skills/fullstack-7layer-react/references/fullstack-react-templates.md",".agents/skills/zustand-store/SKILL.md",".claude/agents/acceptance-runner.md",".claude/agents/module-blueprint.md",".claude/launch.json",".claude/skills/business-module-intake/SKILL.md",".claude/skills/frontend-api-react/SKILL.md",".claude/skills/frontend-view-react/SKILL.md",".claude/skills/frontend-view-react/references/view-templates.md",".claude/skills/fullstack-7layer-react/SKILL.md",".claude/skills/fullstack-7layer-react/references/fullstack-react-templates.md",".claude/skills/zustand-store/SKILL.md",".github/pull_request_template.md",".github/workflows/governance.yml",".gitignore","AGENTS.md","CLAUDE.md","README.md","apps/api-fastify/.env.example","apps/api-fastify/.gitignore","apps/api-fastify/package.json","apps/api-fastify/pnpm-lock.yaml","apps/api-fastify/prisma/migrations/20260608150500_init/migration.sql","apps/api-fastify/prisma/migrations/20260705080000_outbox_dead_letter/migration.sql","apps/api-fastify/prisma/migrations/migration_lock.toml","apps/api-fastify/prisma/schema.prisma","apps/api-fastify/src/app.ts","apps/api-fastify/src/lib/orderMachine.ts","apps/api-fastify/src/lib/statemachine.ts","apps/api-fastify/src/modules/orders/orders.service.ts","apps/api-fastify/src/modules/tenant.ts","apps/api-fastify/src/modules/users/users.service.ts","apps/api-fastify/src/plugins/events.ts","apps/api-fastify/src/plugins/outbox.ts","apps/api-fastify/src/plugins/prisma.ts","apps/api-fastify/src/plugins/queue.ts","apps/api-fastify/src/plugins/redis.ts","apps/api-fastify/src/routes/health.ts","apps/api-fastify/src/routes/jobs.ts","apps/api-fastify/src/routes/orders.ts","apps/api-fastify/src/routes/sse.ts","apps/api-fastify/src/routes/users.ts","apps/api-fastify/src/routes/ws.ts","apps/api-fastify/src/server.ts","apps/api-fastify/src/types.ts","apps/api-fastify/test/http.acceptance.test.ts","apps/api-fastify/test/orders.integration.test.ts","apps/api-fastify/test/outbox.deadletter.test.ts","apps/api-fastify/test/realtime.tenant.test.ts","apps/api-fastify/tsconfig.json","apps/api-fastify/vitest.config.ts","apps/api-nestjs/.env.example","apps/api-nestjs/.gitignore","apps/api-nestjs/docker-compose.yml","apps/api-nestjs/nest-cli.json","apps/api-nestjs/package.json","apps/api-nestjs/pnpm-lock.yaml","apps/api-nestjs/prisma/migrations/20260608150500_init/migration.sql","apps/api-nestjs/prisma/migrations/20260705080000_outbox_dead_letter/migration.sql","apps/api-nestjs/prisma/migrations/migration_lock.toml","apps/api-nestjs/prisma/schema.prisma","apps/api-nestjs/prisma/seed.ts","apps/api-nestjs/src/app.module.ts","apps/api-nestjs/src/common/envelope.ts","apps/api-nestjs/src/common/tenant.decorator.ts","apps/api-nestjs/src/common/zod-validation.pipe.ts","apps/api-nestjs/src/create-app.ts","apps/api-nestjs/src/events/event-bus.service.ts","apps/api-nestjs/src/events/events.gateway.ts","apps/api-nestjs/src/events/events.module.ts","apps/api-nestjs/src/events/fanout.service.ts","apps/api-nestjs/src/events/outbox-dispatcher.service.ts","apps/api-nestjs/src/health/health.controller.ts","apps/api-nestjs/src/health/health.module.ts","apps/api-nestjs/src/main.ts","apps/api-nestjs/src/orders/orders.controller.ts","apps/api-nestjs/src/orders/orders.module.ts","apps/api-nestjs/src/orders/orders.service.ts","apps/api-nestjs/src/prisma/prisma.module.ts","apps/api-nestjs/src/prisma/prisma.service.ts","apps/api-nestjs/src/queue/jobs.controller.ts","apps/api-nestjs/src/queue/jobs.processor.ts","apps/api-nestjs/src/queue/queue.module.ts","apps/api-nestjs/src/queue/queue.types.ts","apps/api-nestjs/src/redis/redis.module.ts","apps/api-nestjs/src/sse/sse.controller.ts","apps/api-nestjs/src/sse/sse.module.ts","apps/api-nestjs/src/statemachine/index.ts","apps/api-nestjs/src/statemachine/order.machine.ts","apps/api-nestjs/src/statemachine/statemachine.engine.ts","apps/api-nestjs/src/statemachine/statemachine.types.ts","apps/api-nestjs/src/users/users.controller.ts","apps/api-nestjs/src/users/users.module.ts","apps/api-nestjs/src/users/users.service.ts","apps/api-nestjs/test/http.acceptance.test.ts","apps/api-nestjs/test/orders.integration.test.ts","apps/api-nestjs/test/outbox.deadletter.test.ts","apps/api-nestjs/test/realtime.tenant.test.ts","apps/api-nestjs/tsconfig.build.json","apps/api-nestjs/tsconfig.json","apps/api-nestjs/vitest.config.ts","apps/web/.env.example","apps/web/.gitignore","apps/web/components.json","apps/web/e2e/acceptance.spec.ts","apps/web/eslint.config.mjs","apps/web/next.config.ts","apps/web/package.json","apps/web/playwright.config.ts","apps/web/pnpm-lock.yaml","apps/web/postcss.config.js","apps/web/src/app/api/review/audio/route.ts","apps/web/src/app/api/review/browse/route.ts","apps/web/src/app/api/review/route.ts","apps/web/src/app/api/review/run/route.ts","apps/web/src/app/globals.css","apps/web/src/app/layout.tsx","apps/web/src/app/page.tsx","apps/web/src/app/review/page.tsx","apps/web/src/components/EventFeed.tsx","apps/web/src/components/OrdersPanel.tsx","apps/web/src/components/RealtimeBar.tsx","apps/web/src/components/UsersPanel.tsx","apps/web/src/components/ui/badge.tsx","apps/web/src/components/ui/button.tsx","apps/web/src/components/ui/card.tsx","apps/web/src/components/ui/input.tsx","apps/web/src/components/ui/label.tsx","apps/web/src/components/ui/separator.tsx","apps/web/src/hooks/useRealtime.ts","apps/web/src/lib/api.ts","apps/web/src/lib/providers.tsx","apps/web/src/lib/types.ts","apps/web/src/lib/utils.ts","apps/web/src/store/realtime.ts","apps/web/src/store/useAppStore.ts","apps/web/tailwind.config.ts","apps/web/tsconfig.json","docs/README.md","docs/adr/0001-use-typescript-fullstack.md","docs/adr/0002-use-nextjs-app-router.md","docs/adr/0003-use-nestjs-with-fastify-adapter.md","docs/adr/0004-use-postgresql.md","docs/adr/0005-use-prisma.md","docs/adr/0006-realtime-sse-and-websocket.md","docs/adr/0007-use-bullmq-queue.md","docs/adr/0008-monorepo-pnpm-turborepo.md","docs/adr/0009-dual-backend-governance-parity.md","docs/adr/README.md","docs/domain-glossary.md","docs/domain/owner-matrix.md","docs/domain/structure-lyrics-phase1-blueprint.md","docs/governance-experience.md","docs/migration-notes.md","docs/standards/api-standard.md","docs/standards/backend-standard.md","docs/standards/database-standard.md","docs/standards/frontend-standard.md","docs/standards/git-standard.md","docs/standards/naming-standard.md","docs/standards/review-standard.md","models/model-assets.v1.json","package.json","packages/config/eslint/base.mjs","packages/config/package.json","packages/config/prettier/index.json","packages/config/tsconfig/base.json","packages/config/tsconfig/nextjs.json","packages/config/tsconfig/node.json","packages/contracts/package.json","packages/contracts/src/contracts.test.ts","packages/contracts/src/index.ts","packages/contracts/src/order.ts","packages/contracts/src/realtime.ts","packages/contracts/src/statemachine.test.ts","packages/contracts/src/statemachine.ts","packages/contracts/src/tenant.ts","packages/contracts/src/user.ts","packages/contracts/tsconfig.json","pnpm-lock.yaml","pnpm-workspace.yaml","reports/baseline.json","reports/contract-consumers.latest.json","reports/docs-truth.latest.json","reports/dual-backend-parity.latest.json","reports/governance-docs.latest.json","reports/governance.latest.json","reports/migrations.latest.json","reports/model-assets.latest.json","reports/model-evidence/htdemucs-smoke.latest.json","reports/model-evidence/mms-fa-smoke.latest.json","reports/model-evidence/qwen3-asr-smoke.latest.json","reports/model-evidence/structure-smoke.latest.json","reports/naming.latest.json","reports/order-concurrency-guard.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/validation-source.latest.json","scripts/check-contract-consumers.mjs","scripts/check-docs-truth.mjs","scripts/check-dual-backend-parity.mjs","scripts/check-governance-docs.mjs","scripts/check-migrations.mjs","scripts/check-model-assets.mjs","scripts/check-naming.mjs","scripts/check-order-concurrency-guard.mjs","scripts/check-runtime-acceptance.mjs","scripts/check-schema-sync.mjs","scripts/check-ui-acceptance.mjs","scripts/check-validation-source.mjs","scripts/governance-report.mjs","services/structure_lyrics/README.md","services/structure_lyrics/examples/demo_song/asr.json","services/structure_lyrics/examples/demo_song/lyrics.txt","services/structure_lyrics/examples/demo_song/structure.json","services/structure_lyrics/phase1/__init__.py","services/structure_lyrics/phase1/align.py","services/structure_lyrics/phase1/asr.py","services/structure_lyrics/phase1/audio.py","services/structure_lyrics/phase1/cli.py","services/structure_lyrics/phase1/lyrics.py","services/structure_lyrics/phase1/models.py","services/structure_lyrics/phase1/pipeline.py","services/structure_lyrics/phase1/similarity.py","services/structure_lyrics/phase1/structure.py","services/structure_lyrics/phase1/textnorm.py","services/structure_lyrics/phase2/__init__.py","services/structure_lyrics/phase2/audio_io.py","services/structure_lyrics/phase2/backend.py","services/structure_lyrics/phase2/cli.py","services/structure_lyrics/phase2/pipeline.py","services/structure_lyrics/phase2/refine.py","services/structure_lyrics/requirements.txt","services/structure_lyrics/run_song.py","services/structure_lyrics/tests/test_align.py","services/structure_lyrics/tests/test_language.py","services/structure_lyrics/tests/test_multilang.py","services/structure_lyrics/tests/test_phase2.py","tsconfig.base.json","turbo.json","workers/demucs/requirements_demucs.txt","workers/demucs/run_separate.py","workers/mms-fa/README.md","workers/mms-fa/align_tasks.py","workers/mms-fa/requirements_mms_fa.txt","workers/mms-fa/run_mms_fa.py","workers/qwen3-asr/README.md","workers/qwen3-asr/requirements_qwen3_asr.txt","workers/qwen3-asr/run_qwen3_asr.py","workers/qwen3-asr/testdata/asr_zh.txt","workers/qwen3-asr/testdata/asr_zh.wav","workers/qwen3-asr/vendor/qwen3_asr/__init__.py","workers/qwen3-asr/vendor/qwen3_asr/align/__init__.py","workers/qwen3-asr/vendor/qwen3_asr/align/boundary.py","workers/qwen3-asr/vendor/qwen3_asr/align/chars.py","workers/qwen3-asr/vendor/qwen3_asr/align/monotonic.py","workers/qwen3-asr/vendor/qwen3_asr/align/observation.py","workers/qwen3-asr/vendor/qwen3_asr/align/pcenter.py","workers/qwen3-asr/vendor/qwen3_asr/align/pipeline.py","workers/qwen3-asr/vendor/qwen3_asr/align/progress.py","workers/qwen3-asr/vendor/qwen3_asr/align/tail.py","workers/qwen3-asr/vendor/qwen3_asr/align/text.py","workers/qwen3-asr/vendor/qwen3_asr/align/windows.py","workers/qwen3-asr/vendor/qwen3_asr/align/wordless.py","workers/qwen3-asr/vendor/qwen3_asr/align_cli.py","workers/qwen3-asr/vendor/qwen3_asr/audio.py","workers/qwen3-asr/vendor/qwen3_asr/cache.py","workers/qwen3-asr/vendor/qwen3_asr/cli.py","workers/qwen3-asr/vendor/qwen3_asr/config.py","workers/qwen3-asr/vendor/qwen3_asr/diagnostics_cli.py","workers/qwen3-asr/vendor/qwen3_asr/engine.py","workers/qwen3-asr/vendor/qwen3_asr/forced_aligner.py","workers/qwen3-asr/vendor/qwen3_asr/service.py","workers/qwen3-asr/vendor/qwen3_asr/stream.py","workers/qwen3-asr/vendor/qwen3_asr/stream_cli.py","workers/qwen3-asr/vendor/qwen3_asr/structure.py","workers/qwen3-asr/vendor/qwen3_asr/textutil.py","workers/qwen3-asr/vendor/qwen3_asr/unowned_voice_review.py","workers/qwen3-asr/vendor/qwen3_asr/unowned_voice_review_cli.py","workers/qwen3-asr/vendor/qwen3_asr/unowned_voice_score.py","workers/qwen3-asr/vendor/qwen3_asr/unowned_voice_score_cli.py","workers/qwen3-asr/vendor/qwen3_asr/voice_diagnostics.py","workers/structure/README.md","workers/structure/requirements_structure.txt","workers/structure/run_structure.py","workers/structure/vendor/wav2vec2-conformer-rope-large-960h-ft.config.json"],"removed":[],"modified":[]},"repository":{"id":67,"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":"songformer-structure-lyrics","full_name":"luoanwu/songformer-structure-lyrics","description":"SongFormer 结构时间歌词行:结构→歌词行→字级时间流水线 + 治理底座","empty":false,"private":true,"fork":false,"template":false,"mirror":false,"size":27,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/songformer-structure-lyrics/languages","html_url":"https://gitea.g-hi.com/luoanwu/songformer-structure-lyrics","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/songformer-structure-lyrics","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/songformer-structure-lyrics.git","clone_url":"https://gitea.g-hi.com/luoanwu/songformer-structure-lyrics.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-07-28T14:19:19+08:00","updated_at":"2026-07-28T14:20: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
|
3
|
5
|
1785219618
|
1785219660
|
0
|
1785219617
|
1785219660
|
group: governance-${{ github.workflow }}-${{ githu group: governance-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: "true"
...
|
governance-governance.yml-refs/heads/main
|
1
|
Edit
Delete
|
|
23462
|
chore: refresh quotation acceptance evidence
|
72
|
5
|
governance.yml
|
1
|
5
|
0
|
refs/heads/main
|
5e1d3d6748f60f625f7cd20b8a5defc957497e81
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"0000000000000000000000000000000000000000","after":"5e1d3d6748f60f625f7cd20b8a5defc957497e81","compare_url":"https://gitea.g-hi.com/","commits":[{"id":"5e1d3d6748f60f625f7cd20b8a5defc957497e81","message":"chore: refresh quotation acceptance evidence\n","url":"https://gitea.g-hi.com/luoanwu/juhai-quotation-system/commit/5e1d3d6748f60f625f7cd20b8a5defc957497e81","author":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"verification":null,"timestamp":"2026-07-30T12:53:13-07:00","added":[],"removed":[],"modified":["reports/contract-consumers.latest.json","reports/docs-truth.latest.json","reports/dual-backend-parity.latest.json","reports/governance-docs.latest.json","reports/governance.latest.json","reports/migrations.latest.json","reports/naming.latest.json","reports/order-concurrency-guard.latest.json","reports/runtime-acceptance.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/ui-acceptance.latest.json","reports/validation-source.latest.json"]},{"id":"ce6add1f419d50f150baffe78acbc6adc81b0ea3","message":"feat: implement quotation core workflow\n","url":"https://gitea.g-hi.com/luoanwu/juhai-quotation-system/commit/ce6add1f419d50f150baffe78acbc6adc81b0ea3","author":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"verification":null,"timestamp":"2026-07-30T12:52:01-07:00","added":["apps/api-fastify/prisma/migrations/20260730120000_quotation_core/migration.sql","apps/api-fastify/src/modules/customers/customers.service.ts","apps/api-fastify/src/modules/products/products.service.ts","apps/api-fastify/src/modules/quotations/quotations.service.ts","apps/api-fastify/src/routes/customers.ts","apps/api-fastify/src/routes/products.ts","apps/api-fastify/src/routes/quotations.ts","apps/api-nestjs/prisma/migrations/20260730120000_quotation_core/migration.sql","apps/api-nestjs/src/customers/customers.controller.ts","apps/api-nestjs/src/customers/customers.module.ts","apps/api-nestjs/src/customers/customers.service.ts","apps/api-nestjs/src/products/products.controller.ts","apps/api-nestjs/src/products/products.module.ts","apps/api-nestjs/src/products/products.service.ts","apps/api-nestjs/src/quotations/quotations.controller.ts","apps/api-nestjs/src/quotations/quotations.module.ts","apps/api-nestjs/src/quotations/quotations.service.ts","apps/web/src/app/quote/[accessToken]/page.tsx","apps/web/src/app/quote/[accessToken]/print/page.tsx","apps/web/src/features/customers/api/customers-api.ts","apps/web/src/features/customers/components/CustomerLibrary.tsx","apps/web/src/features/customers/hooks/use-customers.ts","apps/web/src/features/products/api/products-api.ts","apps/web/src/features/products/components/ProductLibrary.tsx","apps/web/src/features/products/hooks/use-products.ts","apps/web/src/features/quotations/api/quotations-api.ts","apps/web/src/features/quotations/components/PublicQuotationView.tsx","apps/web/src/features/quotations/components/QuotationWorkbench.tsx","apps/web/src/features/quotations/hooks/use-quotations.ts","docs/domain/quotation-blueprint.md","packages/contracts/src/quotation.ts"],"removed":[],"modified":["CLAUDE.md","README.md","apps/api-fastify/prisma/schema.prisma","apps/api-fastify/src/app.ts","apps/api-fastify/src/modules/tenant.ts","apps/api-fastify/test/http.acceptance.test.ts","apps/api-nestjs/prisma/schema.prisma","apps/api-nestjs/src/app.module.ts","apps/api-nestjs/src/common/tenant.decorator.ts","apps/api-nestjs/test/http.acceptance.test.ts","apps/web/e2e/acceptance.spec.ts","apps/web/package.json","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/utils.ts","docs/domain-glossary.md","docs/domain/owner-matrix.md","packages/contracts/src/contracts.test.ts","packages/contracts/src/index.ts","packages/contracts/src/realtime.ts","pnpm-lock.yaml","reports/baseline.json","scripts/check-ui-acceptance.mjs"]},{"id":"4285699248e5f7d702171ee66f7ea2d5e57a4aed","message":"chore: refresh local acceptance reports\n","url":"https://gitea.g-hi.com/luoanwu/juhai-quotation-system/commit/4285699248e5f7d702171ee66f7ea2d5e57a4aed","author":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"verification":null,"timestamp":"2026-07-30T12:22:09-07:00","added":[],"removed":[],"modified":["reports/contract-consumers.latest.json","reports/docs-truth.latest.json","reports/dual-backend-parity.latest.json","reports/governance-docs.latest.json","reports/governance.latest.json","reports/migrations.latest.json","reports/naming.latest.json","reports/order-concurrency-guard.latest.json","reports/runtime-acceptance.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/ui-acceptance.latest.json","reports/validation-source.latest.json"]},{"id":"37e3a10e3f530299526a984beacd597b13ab098a","message":"chore: refresh migration evidence\n","url":"https://gitea.g-hi.com/luoanwu/juhai-quotation-system/commit/37e3a10e3f530299526a984beacd597b13ab098a","author":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"verification":null,"timestamp":"2026-07-30T07:55:08-07:00","added":[],"removed":[],"modified":["CLAUDE.md","reports/contract-consumers.latest.json","reports/docs-truth.latest.json","reports/dual-backend-parity.latest.json","reports/governance-docs.latest.json","reports/governance.latest.json","reports/migrations.latest.json","reports/naming.latest.json","reports/order-concurrency-guard.latest.json","reports/runtime-acceptance.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/ui-acceptance.latest.json","reports/validation-source.latest.json"]},{"id":"e6336ca3f8154422a56269945d3f39343dd952fa","message":"chore: migrate base framework\n","url":"https://gitea.g-hi.com/luoanwu/juhai-quotation-system/commit/e6336ca3f8154422a56269945d3f39343dd952fa","author":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"verification":null,"timestamp":"2026-07-30T07:42:32-07:00","added":[".agents/skills/frontend-api-react/SKILL.md",".agents/skills/frontend-view-react/SKILL.md",".agents/skills/frontend-view-react/references/view-templates.md",".agents/skills/fullstack-7layer-react/SKILL.md",".agents/skills/fullstack-7layer-react/references/fullstack-react-templates.md",".agents/skills/zustand-store/SKILL.md",".claude/agents/acceptance-runner.md",".claude/agents/module-blueprint.md",".claude/launch.json",".claude/skills/business-module-intake/SKILL.md",".claude/skills/frontend-api-react/SKILL.md",".claude/skills/frontend-view-react/SKILL.md",".claude/skills/frontend-view-react/references/view-templates.md",".claude/skills/fullstack-7layer-react/SKILL.md",".claude/skills/fullstack-7layer-react/references/fullstack-react-templates.md",".claude/skills/zustand-store/SKILL.md",".github/pull_request_template.md",".github/workflows/governance.yml",".gitignore","AGENTS.md","CLAUDE.md","README.md","apps/api-fastify/.env.example","apps/api-fastify/.gitignore","apps/api-fastify/package.json","apps/api-fastify/pnpm-lock.yaml","apps/api-fastify/prisma/migrations/20260608150500_init/migration.sql","apps/api-fastify/prisma/migrations/20260705080000_outbox_dead_letter/migration.sql","apps/api-fastify/prisma/migrations/migration_lock.toml","apps/api-fastify/prisma/schema.prisma","apps/api-fastify/src/app.ts","apps/api-fastify/src/lib/orderMachine.ts","apps/api-fastify/src/lib/statemachine.ts","apps/api-fastify/src/modules/orders/orders.service.ts","apps/api-fastify/src/modules/tenant.ts","apps/api-fastify/src/modules/users/users.service.ts","apps/api-fastify/src/plugins/events.ts","apps/api-fastify/src/plugins/outbox.ts","apps/api-fastify/src/plugins/prisma.ts","apps/api-fastify/src/plugins/queue.ts","apps/api-fastify/src/plugins/redis.ts","apps/api-fastify/src/routes/health.ts","apps/api-fastify/src/routes/jobs.ts","apps/api-fastify/src/routes/orders.ts","apps/api-fastify/src/routes/sse.ts","apps/api-fastify/src/routes/users.ts","apps/api-fastify/src/routes/ws.ts","apps/api-fastify/src/server.ts","apps/api-fastify/src/types.ts","apps/api-fastify/test/http.acceptance.test.ts","apps/api-fastify/test/orders.integration.test.ts","apps/api-fastify/test/outbox.deadletter.test.ts","apps/api-fastify/test/realtime.tenant.test.ts","apps/api-fastify/tsconfig.json","apps/api-fastify/vitest.config.ts","apps/api-nestjs/.env.example","apps/api-nestjs/.gitignore","apps/api-nestjs/docker-compose.yml","apps/api-nestjs/nest-cli.json","apps/api-nestjs/package.json","apps/api-nestjs/pnpm-lock.yaml","apps/api-nestjs/prisma/migrations/20260608150500_init/migration.sql","apps/api-nestjs/prisma/migrations/20260705080000_outbox_dead_letter/migration.sql","apps/api-nestjs/prisma/migrations/migration_lock.toml","apps/api-nestjs/prisma/schema.prisma","apps/api-nestjs/prisma/seed.ts","apps/api-nestjs/src/app.module.ts","apps/api-nestjs/src/common/envelope.ts","apps/api-nestjs/src/common/tenant.decorator.ts","apps/api-nestjs/src/common/zod-validation.pipe.ts","apps/api-nestjs/src/create-app.ts","apps/api-nestjs/src/events/event-bus.service.ts","apps/api-nestjs/src/events/events.gateway.ts","apps/api-nestjs/src/events/events.module.ts","apps/api-nestjs/src/events/fanout.service.ts","apps/api-nestjs/src/events/outbox-dispatcher.service.ts","apps/api-nestjs/src/health/health.controller.ts","apps/api-nestjs/src/health/health.module.ts","apps/api-nestjs/src/main.ts","apps/api-nestjs/src/orders/orders.controller.ts","apps/api-nestjs/src/orders/orders.module.ts","apps/api-nestjs/src/orders/orders.service.ts","apps/api-nestjs/src/prisma/prisma.module.ts","apps/api-nestjs/src/prisma/prisma.service.ts","apps/api-nestjs/src/queue/jobs.controller.ts","apps/api-nestjs/src/queue/jobs.processor.ts","apps/api-nestjs/src/queue/queue.module.ts","apps/api-nestjs/src/queue/queue.types.ts","apps/api-nestjs/src/redis/redis.module.ts","apps/api-nestjs/src/sse/sse.controller.ts","apps/api-nestjs/src/sse/sse.module.ts","apps/api-nestjs/src/statemachine/index.ts","apps/api-nestjs/src/statemachine/order.machine.ts","apps/api-nestjs/src/statemachine/statemachine.engine.ts","apps/api-nestjs/src/statemachine/statemachine.types.ts","apps/api-nestjs/src/users/users.controller.ts","apps/api-nestjs/src/users/users.module.ts","apps/api-nestjs/src/users/users.service.ts","apps/api-nestjs/test/http.acceptance.test.ts","apps/api-nestjs/test/orders.integration.test.ts","apps/api-nestjs/test/outbox.deadletter.test.ts","apps/api-nestjs/test/realtime.tenant.test.ts","apps/api-nestjs/tsconfig.build.json","apps/api-nestjs/tsconfig.json","apps/api-nestjs/vitest.config.ts","apps/web/.env.example","apps/web/.gitignore","apps/web/components.json","apps/web/e2e/acceptance.spec.ts","apps/web/eslint.config.mjs","apps/web/next.config.ts","apps/web/package.json","apps/web/playwright.config.ts","apps/web/pnpm-lock.yaml","apps/web/postcss.config.js","apps/web/src/app/globals.css","apps/web/src/app/layout.tsx","apps/web/src/app/page.tsx","apps/web/src/components/EventFeed.tsx","apps/web/src/components/OrdersPanel.tsx","apps/web/src/components/RealtimeBar.tsx","apps/web/src/components/UsersPanel.tsx","apps/web/src/components/ui/badge.tsx","apps/web/src/components/ui/button.tsx","apps/web/src/components/ui/card.tsx","apps/web/src/components/ui/input.tsx","apps/web/src/components/ui/label.tsx","apps/web/src/components/ui/separator.tsx","apps/web/src/hooks/useRealtime.ts","apps/web/src/lib/api.ts","apps/web/src/lib/providers.tsx","apps/web/src/lib/types.ts","apps/web/src/lib/utils.ts","apps/web/src/store/realtime.ts","apps/web/src/store/useAppStore.ts","apps/web/tailwind.config.ts","apps/web/tsconfig.json","docs/README.md","docs/adr/0001-use-typescript-fullstack.md","docs/adr/0002-use-nextjs-app-router.md","docs/adr/0003-use-nestjs-with-fastify-adapter.md","docs/adr/0004-use-postgresql.md","docs/adr/0005-use-prisma.md","docs/adr/0006-realtime-sse-and-websocket.md","docs/adr/0007-use-bullmq-queue.md","docs/adr/0008-monorepo-pnpm-turborepo.md","docs/adr/0009-dual-backend-governance-parity.md","docs/adr/README.md","docs/domain-glossary.md","docs/domain/owner-matrix.md","docs/governance-experience.md","docs/standards/api-standard.md","docs/standards/backend-standard.md","docs/standards/database-standard.md","docs/standards/frontend-standard.md","docs/standards/git-standard.md","docs/standards/naming-standard.md","docs/standards/review-standard.md","package.json","packages/config/eslint/base.mjs","packages/config/package.json","packages/config/prettier/index.json","packages/config/tsconfig/base.json","packages/config/tsconfig/nextjs.json","packages/config/tsconfig/node.json","packages/contracts/package.json","packages/contracts/src/contracts.test.ts","packages/contracts/src/index.ts","packages/contracts/src/order.ts","packages/contracts/src/realtime.ts","packages/contracts/src/statemachine.test.ts","packages/contracts/src/statemachine.ts","packages/contracts/src/tenant.ts","packages/contracts/src/user.ts","packages/contracts/tsconfig.json","pnpm-lock.yaml","pnpm-workspace.yaml","reports/baseline.json","reports/contract-consumers.latest.json","reports/docs-truth.latest.json","reports/dual-backend-parity.latest.json","reports/governance-docs.latest.json","reports/governance.latest.json","reports/migrations.latest.json","reports/naming.latest.json","reports/order-concurrency-guard.latest.json","reports/runtime-acceptance.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/ui-acceptance.latest.json","reports/validation-source.latest.json","scripts/check-contract-consumers.mjs","scripts/check-docs-truth.mjs","scripts/check-dual-backend-parity.mjs","scripts/check-governance-docs.mjs","scripts/check-migrations.mjs","scripts/check-naming.mjs","scripts/check-order-concurrency-guard.mjs","scripts/check-runtime-acceptance.mjs","scripts/check-schema-sync.mjs","scripts/check-ui-acceptance.mjs","scripts/check-validation-source.mjs","scripts/governance-report.mjs","scripts/lib/report-provenance.mjs","tsconfig.base.json","turbo.json"],"removed":[],"modified":[]}],"total_commits":0,"head_commit":{"id":"5e1d3d6748f60f625f7cd20b8a5defc957497e81","message":"chore: refresh quotation acceptance evidence\n","url":"https://gitea.g-hi.com/luoanwu/juhai-quotation-system/commit/5e1d3d6748f60f625f7cd20b8a5defc957497e81","author":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"verification":null,"timestamp":"2026-07-30T12:53:13-07:00","added":[],"removed":[],"modified":["reports/contract-consumers.latest.json","reports/docs-truth.latest.json","reports/dual-backend-parity.latest.json","reports/governance-docs.latest.json","reports/governance.latest.json","reports/migrations.latest.json","reports/naming.latest.json","reports/order-concurrency-guard.latest.json","reports/runtime-acceptance.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/ui-acceptance.latest.json","reports/validation-source.latest.json"]},"repository":{"id":72,"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-quotation-system","full_name":"luoanwu/juhai-quotation-system","description":"巨嗨报价系统:Next.js + NestJS/Fastify 双后端治理型报价业务底座","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":27,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhai-quotation-system/languages","html_url":"https://gitea.g-hi.com/luoanwu/juhai-quotation-system","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhai-quotation-system","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/juhai-quotation-system.git","clone_url":"https://gitea.g-hi.com/luoanwu/juhai-quotation-system.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-07-31T03:51:09+08:00","updated_at":"2026-07-31T03:57: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
|
3
|
5
|
1785441431
|
1785441505
|
0
|
1785441430
|
1785441505
|
group: governance-${{ github.workflow }}-${{ githu group: governance-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: "true"
...
|
governance-governance.yml-refs/heads/main
|
1
|
Edit
Delete
|
|
23495
|
chore(reports): 刷新治理证据,绑定提交 5acf362——容器化落地后三级重跑
|
74
|
5
|
governance.yml
|
9
|
5
|
0
|
refs/heads/main
|
b33f650552dbc4adad6df5ee670b6d9eba8eb125
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"15248a4a041b4e0b1716d65ce7327315a8d39176","after":"b33f650552dbc4adad6df5ee670b6d9eba8eb125","compare_url":"https://gitea.g-hi.com/luoanwu/haimate/compare/15248a4a041b4e0b1716d65ce7327315a8d39176...b33f650552dbc4adad6df5ee670b6d9eba8eb125","commits":[{"id":"b33f650552dbc4adad6df5ee670b6d9eba8eb125","message":"chore(reports): 刷新治理证据,绑定提交 5acf362——容器化落地后三级重跑\n\n三份报告 provenance 均为 gitSha=5acf362 + worktreeDirty=false。\n\n- 静态 pnpm check 00:32Z 16 道门禁 + 棘轮 + lint + typecheck 全绿\n- 真实 DB check:runtime 00:33Z status=passed, 380 tests / 0 failures (floor 380)\n- 浏览器 check:ui 00:34Z status=passed, 14 用例 / 0 unexpected (floor 14)\n\n本轮为什么必须重跑而不能沿用上一份(fe9a6ae)绿盘:\nCI 修复 b673ff8 改动了双端 security.http.test.ts 与 scripts/check-runtime-acceptance.mjs\n——被测代码与测试运行器都变了,旧 runtime 证据随即失效。已把这条判据写进 CLAUDE.md:\n凡 apps/*/test、packages/contracts/src、apps/*/src、prisma 或验收 runner 自身发生改动,\n对应等级的证据一律作废重跑,不得沿用。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/haimate/commit/b33f650552dbc4adad6df5ee670b6d9eba8eb125","author":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"verification":null,"timestamp":"2026-08-17T17:35:11-07:00","added":[],"removed":[],"modified":["CLAUDE.md","reports/contract-consumers.latest.json","reports/docs-truth.latest.json","reports/dual-backend-parity.latest.json","reports/governance-docs.latest.json","reports/governance.latest.json","reports/hallucination-guard.latest.json","reports/migrations.latest.json","reports/naming.latest.json","reports/order-concurrency-guard.latest.json","reports/outbox-lease.latest.json","reports/owner-matrix.latest.json","reports/partner-truth.latest.json","reports/runtime-acceptance.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/security-boundary.latest.json","reports/tailwind-tokens.latest.json","reports/ui-acceptance.latest.json","reports/validation-source.latest.json"]},{"id":"5acf36269dc9ac57017fb9d77c43ac28fca73395","message":"feat(ops): 容器化全栈——三份应用 Dockerfile + compose 编排,G20 部分推进\n\nG20 此前记为\"生产运维平面为空:无应用 Dockerfile / 生产 compose 或编排\"。\n本次把容器化这一段做实并实测跑通,其余运维项仍 OPEN。\n\n新增\n- docker/Dockerfile.api-{fastify,nestjs} / .web:node:20-slim + openssl 基座\n (Prisma engine 在 musl 上需另一套二进制目标,alpine 极易出现\"本机能跑、容器里\n engine 找不到\");多阶段构建,依赖层只拷 manifest 以命中缓存\n- compose.yml:PG/Redis + 双后端各自的迁移 job + 双后端 + 前端;\n healthcheck 打 /api/health(真探 DB+Redis,非探活);端口用 +100 段,\n 可与本机 dev 栈同时运行\n- .dockerignore:仓库 1.7G 中 node_modules 占 1.5G,不排除会撑爆构建上下文;\n 宿主机依赖含平台相关二进制,拷进 linux 镜像必然是错的\n\n两个构建期参数(写错不报错、只静默坏掉,已写进 Dockerfile 顶部)\n- API_PROXY_TARGET:next rewrites 在 next build 时序列化进 routes-manifest,\n 是构建参数不是运行时变量;取值走 compose 内网服务名\n- NEXT_PUBLIC_WS_URL:NEXT_PUBLIC_* 构建期内联进客户端 bundle,而 WebSocket 由\n 浏览器直连(rewrites 只代理 /api 与 /sse),取值必须是宿主机可达地址\n 两者取值域相反,搞混的症状是\"页面能开、实时永远未连接\"\n\n迁移刻意拆成两个 job 不合并:双后端各有自己的 prisma/migrations,\"跑一个等于跑两个\"\n是 check:schema / check:migrations 保证的结论,不是编排可以预设的前提。\n实测 migrate-nestjs 独立复核报\"6 个迁移、无待应用\",一致性是被验证而非被假设的。\n\n本地实测证据\n- 五服务全部 healthy;双端容器内 /api/health 均 database/redis: up\n- 租户边界在容器栈同样生效:带租户 200 / 不带 400\n- 浏览器写入后 user.created 经 outbox→Redis→WS 落到 EventFeed(含 tenantId/eventId)\n- web 容器 /api/health 返回 service: fastify,证明内网代理参数正确\n- 容器栈与本机 dev 栈同时运行、数据互不可见\n\n仍 OPEN(CLAUDE.md G20 已按实分栏,不得据此宣称可上生产)\n镜像各约 2.1GB 未裁剪(pnpm 符号链接虚拟 store 与 node_modules/.prisma 耦合,\nprod-only 裁剪易做出\"能构建但运行时缺 engine\"的镜像,首版优先保证真能跑);\n安全模式仍 demo 且 DB 口令明文;无灰度回滚 Runbook / OTel / 限流熔断 / 审计日志 /\n备份恢复演练 / SLO 告警 / 镜像仓库与版本策略;未在任何非本机环境部署过。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/haimate/commit/5acf36269dc9ac57017fb9d77c43ac28fca73395","author":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"verification":null,"timestamp":"2026-08-17T17:31:42-07:00","added":[".dockerignore","compose.yml","docker/Dockerfile.api-fastify","docker/Dockerfile.api-nestjs","docker/Dockerfile.web"],"removed":[],"modified":["CLAUDE.md"]},{"id":"b0b189c813b46ab3b6903cc4a13cd1ce1ad34d81","message":"fix(dev): launch.json 指向本仓专属库,并补齐 demo 模式与 worker 开关\n\n启动本地开发栈时发现三处会让人\"跑起来了但其实是坏的\"的问题:\n\n1. DATABASE_URL 原先指向 base_framework_dev——实测该库里同时装着另一个项目的\n 8 个迁移(material_factory / brand_kit_profile / voiceprint_tasks / voice_cloning 等),\n 且缺本仓最新的 20260817090000_add_crew_engagement。按原配置启动会把本仓迁移\n 打进别的项目的库,正是 CLAUDE.md G15 记录的\"本机 PG:55432 被多项目共用\"事故模式。\n 改为本仓专属库 base_framework_haimate_dev(已建库并应用 6 个迁移),\n 对 base_framework_dev 未执行任何写操作。\n\n2. 缺 HAIMATE_SECURITY_MODE=demo——非测试环境默认 signed,缺 JWT 配置时 fail closed,\n 不显式开 demo 则本地所有请求 401(ADR-0011)。\n\n3. 缺 PLATFORM_WORKERS_ENABLED=1——不开则 KB 投影 / Trust 投影 / 审批过期等 worker\n 不运行,页面看起来能用但异步链路是死的。\n\n顺带记录一处认知缺口:G15 的机器防线只装在验收链上(check:runtime / check:ui 强制\n显式 URL + 库名前缀守卫),而开发启动路径没有守卫——launch.json 是手写配置,没人检查\n它指向哪。于是\"验收比开发更安全\",而开发才是每天都在跑的那条路径。已在文件内写明原因,\n机器化守卫列为后续项。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/haimate/commit/b0b189c813b46ab3b6903cc4a13cd1ce1ad34d81","author":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"verification":null,"timestamp":"2026-08-17T17:31:16-07:00","added":[],"removed":[],"modified":[".claude/launch.json"]}],"total_commits":0,"head_commit":{"id":"b33f650552dbc4adad6df5ee670b6d9eba8eb125","message":"chore(reports): 刷新治理证据,绑定提交 5acf362——容器化落地后三级重跑\n\n三份报告 provenance 均为 gitSha=5acf362 + worktreeDirty=false。\n\n- 静态 pnpm check 00:32Z 16 道门禁 + 棘轮 + lint + typecheck 全绿\n- 真实 DB check:runtime 00:33Z status=passed, 380 tests / 0 failures (floor 380)\n- 浏览器 check:ui 00:34Z status=passed, 14 用例 / 0 unexpected (floor 14)\n\n本轮为什么必须重跑而不能沿用上一份(fe9a6ae)绿盘:\nCI 修复 b673ff8 改动了双端 security.http.test.ts 与 scripts/check-runtime-acceptance.mjs\n——被测代码与测试运行器都变了,旧 runtime 证据随即失效。已把这条判据写进 CLAUDE.md:\n凡 apps/*/test、packages/contracts/src、apps/*/src、prisma 或验收 runner 自身发生改动,\n对应等级的证据一律作废重跑,不得沿用。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/haimate/commit/b33f650552dbc4adad6df5ee670b6d9eba8eb125","author":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"verification":null,"timestamp":"2026-08-17T17:35:11-07:00","added":[],"removed":[],"modified":["CLAUDE.md","reports/contract-consumers.latest.json","reports/docs-truth.latest.json","reports/dual-backend-parity.latest.json","reports/governance-docs.latest.json","reports/governance.latest.json","reports/hallucination-guard.latest.json","reports/migrations.latest.json","reports/naming.latest.json","reports/order-concurrency-guard.latest.json","reports/outbox-lease.latest.json","reports/owner-matrix.latest.json","reports/partner-truth.latest.json","reports/runtime-acceptance.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/security-boundary.latest.json","reports/tailwind-tokens.latest.json","reports/ui-acceptance.latest.json","reports/validation-source.latest.json"]},"repository":{"id":74,"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":"haimate","full_name":"luoanwu/haimate","description":"","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":5719,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/haimate/languages","html_url":"https://gitea.g-hi.com/luoanwu/haimate","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/haimate","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/haimate.git","clone_url":"https://gitea.g-hi.com/luoanwu/haimate.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-08-15T06:22:30+08:00","updated_at":"2026-08-18T08:02:54+08:00","archived_at":"1970-01-01T08:00:00+08:00","permissions":{"admin":true,"push":true,"pull":true},"has_code":true,"has_issues":true,"internal_tracker":{"enable_time_tracker":true,"allow_only_contributors_to_track_time":true,"enable_issue_dependencies":true},"has_wiki":true,"has_pull_requests":true,"has_projects":true,"projects_mode":"all","has_releases":true,"has_packages":true,"has_actions":true,"ignore_whitespace_conflicts":false,"allow_merge_commits":true,"allow_rebase":true,"allow_rebase_explicit":true,"allow_squash_merge":true,"allow_fast_forward_only_merge":true,"allow_rebase_update":true,"allow_manual_merge":false,"autodetect_manual_merge":false,"default_delete_branch_after_merge":false,"default_merge_style":"merge","default_allow_maintainer_edit":true,"avatar_url":"","internal":false,"mirror_interval":"","object_format_name":"sha1","mirror_updated":"0001-01-01T00:00:00Z","topics":[],"licenses":[]},"pusher":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"sender":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"}}...
|
push
|
3
|
5
|
1787013327
|
1787013419
|
0
|
1787013326
|
1787013419
|
group: governance-${{ github.workflow }}-${{ githu group: governance-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: "true"
...
|
governance-governance.yml-refs/heads/main
|
1
|
Edit
Delete
|
|
23510
|
merge: 汇合远端治理修复轮(PR #1/#2/#3,e4b6a5e..c0ed754)与本地 merge: 汇合远端治理修复轮(PR #1/#2/#3,e4b6a5e..c0ed754)与本地 C45–C68 大波次...
|
76
|
5
|
governance.yml
|
11
|
5
|
0
|
refs/heads/main
|
55b9c2a0af78b6998bac3614dedc7187e37057ea
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"c0ed7540c137f2a6828d24503a4c396156996f33","after":"55b9c2a0af78b6998bac3614dedc7187e37057ea","compare_url":"https://gitea.g-hi.com/luoanwu/digital-employee-os/compare/c0ed7540c137f2a6828d24503a4c396156996f33...55b9c2a0af78b6998bac3614dedc7187e37057ea","commits":[{"id":"55b9c2a0af78b6998bac3614dedc7187e37057ea","message":"merge: 汇合远端治理修复轮(PR #1/#2/#3,e4b6a5e..c0ed754)与本地 C45–C68 大波次\n\n冲突决议(24 文件):\n- reports/baseline:取本地 08-22 棘轮(458 tests / 66 files / 456 cases / 19×2 UI,为远端严格超集)\n- jobs.processor / work.module / queue.ts(fastify):取本地 C26 JobIntent 同事务链(远端 commit 后 queue.add + defaultJobOptions 兜底已被结构性取代;嫁接远端 Redis db NaN 守卫到 Fastify 侧保持双后端对等)\n- roles.service ×2:取本地 C42 审计事务版 + 嫁接远端 RoleAssignmentDto 返回类型接线(PR #3 拍板资产)\n- page.tsx:取本地 C53 会话身份(auth-identity testid,Playwright 依赖)\n- check-ui-acceptance:本地 OIDC 编排 + 远端 F8 注释并集\n- CLAUDE.md:本地 C45–C68 动态区为基底,嫁接远端 F8 行、五层 CI 假红叙事、结果裁决角色闸(G8 ⑫)、own-tests git-tracked 口径注记,快照更新为两远端对齐 c0ed754(run 32380591807 绿)\n\n编号撞号收口:两条时间线独立分配了 C25/C26/C1——远端线三个战役重编号为 C69(runner 自含 contracts 构建 + F8)/ C70(地板采集只认 git 已跟踪)/ C71(队列双注册策略显式化),经验库标题、脚本注释、测试注释同步改引;本地 C25(迟到成功)/C26(JobIntent)/C1(check-naming)编号不变。\n\n合并树证据:静态 pnpm check 全绿(Node 22,本地 dirty 工作区 2026-08-22);双后端 UI 聚合 38/38 绿(伙伴会话实跑,指纹绑定本合并内容)。合并提交自身的远端 CI 以 headSha 定位的 run 为准。\n\nCo-Authored-By: Claude Fable 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/digital-employee-os/commit/55b9c2a0af78b6998bac3614dedc7187e37057ea","author":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"verification":null,"timestamp":"2026-08-22T08:10:56-07:00","added":[],"removed":["apps/api-fastify/pnpm-lock.yaml","apps/api-nestjs/pnpm-lock.yaml","apps/web/pnpm-lock.yaml"],"modified":["CLAUDE.md","apps/api-fastify/.env.example","apps/api-fastify/src/modules/learning.service.ts","apps/api-fastify/src/modules/roles.service.ts","apps/api-fastify/src/modules/triggers.service.ts","apps/api-fastify/src/routes/health.ts","apps/api-fastify/src/routes/outcomes.ts","apps/api-fastify/src/routes/sse.ts","apps/api-fastify/test/auth.roles.acceptance.test.ts","apps/api-fastify/test/http.acceptance.test.ts","apps/api-fastify/test/outcomes.integration.test.ts","apps/api-nestjs/.env.example","apps/api-nestjs/src/app.module.ts","apps/api-nestjs/src/learning/learning.service.ts","apps/api-nestjs/src/outcomes/outcomes.controller.ts","apps/api-nestjs/src/outcomes/outcomes.module.ts","apps/api-nestjs/src/roles/roles.service.ts","apps/api-nestjs/src/triggers/trigger-engine.service.ts","apps/api-nestjs/test/auth.roles.acceptance.test.ts","apps/api-nestjs/test/http.acceptance.test.ts","apps/api-nestjs/test/outcomes.integration.test.ts","apps/web/src/app/layout.tsx","apps/web/src/store/useAppStore.ts","docs/README.md","docs/adr/README.md","docs/governance-experience.md","docs/migration-playbook.md","packages/contracts/package.json","packages/contracts/src/contracts.test.ts","packages/contracts/src/index.ts","packages/contracts/src/job.ts","packages/contracts/src/learning.ts","packages/contracts/src/outcome.ts","packages/contracts/src/realtime-command.ts","packages/contracts/src/tenant.ts","packages/contracts/tsconfig.json","scripts/check-contract-consumers.mjs","scripts/check-fork-readiness.mjs","scripts/check-runtime-acceptance.mjs","scripts/check-ui-acceptance.mjs","scripts/governance-report.mjs","turbo.json"]},{"id":"f79d0b0b172086ad5ae0954bd2f27a4e640398a1","message":"feat(security)+feat(ops)+feat(mobile): 生产安全与运维深水区大波次——权限/OIDC/RLS/凭据隔离/追踪/韧性/容量/移动端双平台\n\n- 权限与身份:C52 PermissionAssignment 细粒度权限(ALLOW/DENY 覆盖 + 迁移 CHECK)+ C53 Web OIDC PKCE 真实登录态(mock IdP + BFF code exchange + 会话复核)+ C51 生产启动 fail-closed(check:auth-startup)\n- 数据库纵深:C54 22 租户表 FORCE RLS 双策略与 ALS Prisma bridge + C55/C56 migration/API/dispatcher 三凭据分离、独立 dispatcher 入口(check:db-credentials / check:rls)\n- 可观测与韧性:C57 OTLP/W3C 四进程分布式追踪(packages/observability tracing + otel-collector/tempo 参考编排)+ C58/C63/C64/C65 依赖断链/半开黑洞/超时延迟/池饱和 14 fault 恢复(check:dependency-resilience)\n- 容量包络:C61 双 API 真实依赖探测 480 次(check:capacity)+ C66 双后端业务写链 40 主链持久积压无损排空(check:write-capacity)\n- 多实例与 Redis:C49 四 OS 进程真实竞争领取(check:multi-instance)+ C50 requirepass/非零 DB live 认证链(check:redis-auth)\n- 数字员工体验:C46 Actor 入职状态机与六步配置 + C45 health 单源 + C47 SSE 浏览器验收 + 工作台响应式设计收口(design-qa 验收记录 + PageMetricStrip + 头像资产)\n- 移动端:C59/C60 Capacitor 8 Android/iOS 双平台受版本控制工程 + 静态导出 runner(check:mobile)+ Android debug APK/emulator 验收 + 移动 runbook\n- 治理回灌:CLAUDE.md/AGENTS.md 动态区 C45–C67 战役索引、baseline 棘轮(458 tests / 127 行为对比点 / 19×2 UI 用例)、全量 reports 证据刷新\n\nCo-Authored-By: Claude Fable 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/digital-employee-os/commit/f79d0b0b172086ad5ae0954bd2f27a4e640398a1","author":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"verification":null,"timestamp":"2026-08-22T07:42:56-07:00","added":["apps/api-fastify/prisma/migrations/20260826000000_actor_lifecycle/migration.sql","apps/api-fastify/prisma/migrations/20260827000000_permission_assignments/migration.sql","apps/api-fastify/prisma/migrations/20260828000000_tenant_rls/migration.sql","apps/api-fastify/src/dispatcher.ts","apps/api-fastify/src/modules/permissions.service.ts","apps/api-fastify/src/plugins/rls-context.ts","apps/api-fastify/src/plugins/rls-prisma.ts","apps/api-fastify/src/routes/permissions.ts","apps/api-fastify/test/auth.permissions.acceptance.test.ts","apps/api-fastify/test/rls.acceptance.test.ts","apps/api-nestjs/prisma/migrations/20260826000000_actor_lifecycle/migration.sql","apps/api-nestjs/prisma/migrations/20260827000000_permission_assignments/migration.sql","apps/api-nestjs/prisma/migrations/20260828000000_tenant_rls/migration.sql","apps/api-nestjs/src/dispatcher.ts","apps/api-nestjs/src/permissions/permissions.controller.ts","apps/api-nestjs/src/permissions/permissions.module.ts","apps/api-nestjs/src/permissions/permissions.service.ts","apps/api-nestjs/src/prisma/rls-context.ts","apps/api-nestjs/src/prisma/rls-prisma.ts","apps/api-nestjs/test/auth.permissions.acceptance.test.ts","apps/api-nestjs/test/rls.acceptance.test.ts","apps/web/android/.gitignore","apps/web/android/app/.gitignore","apps/web/android/app/build.gradle","apps/web/android/app/capacitor.build.gradle","apps/web/android/app/proguard-rules.pro","apps/web/android/app/src/androidTest/java/com/getcapacitor/myapp/ExampleInstrumentedTest.java","apps/web/android/app/src/debug/AndroidManifest.xml","apps/web/android/app/src/main/AndroidManifest.xml","apps/web/android/app/src/main/java/com/highpraise/digitalemployeeos/MainActivity.java","apps/web/android/app/src/main/res/drawable-land-hdpi/splash.png","apps/web/android/app/src/main/res/drawable-land-mdpi/splash.png","apps/web/android/app/src/main/res/drawable-land-xhdpi/splash.png","apps/web/android/app/src/main/res/drawable-land-xxhdpi/splash.png","apps/web/android/app/src/main/res/drawable-land-xxxhdpi/splash.png","apps/web/android/app/src/main/res/drawable-port-hdpi/splash.png","apps/web/android/app/src/main/res/drawable-port-mdpi/splash.png","apps/web/android/app/src/main/res/drawable-port-xhdpi/splash.png","apps/web/android/app/src/main/res/drawable-port-xxhdpi/splash.png","apps/web/android/app/src/main/res/drawable-port-xxxhdpi/splash.png","apps/web/android/app/src/main/res/drawable-v24/ic_launcher_foreground.xml","apps/web/android/app/src/main/res/drawable/ic_launcher_background.xml","apps/web/android/app/src/main/res/drawable/splash.png","apps/web/android/app/src/main/res/layout/activity_main.xml","apps/web/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml","apps/web/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml","apps/web/android/app/src/main/res/mipmap-hdpi/ic_launcher.png","apps/web/android/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png","apps/web/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png","apps/web/android/app/src/main/res/mipmap-mdpi/ic_launcher.png","apps/web/android/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png","apps/web/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png","apps/web/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png","apps/web/android/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png","apps/web/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png","apps/web/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png","apps/web/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png","apps/web/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png","apps/web/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png","apps/web/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png","apps/web/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png","apps/web/android/app/src/main/res/values/ic_launcher_background.xml","apps/web/android/app/src/main/res/values/strings.xml","apps/web/android/app/src/main/res/values/styles.xml","apps/web/android/app/src/main/res/xml/file_paths.xml","apps/web/android/app/src/test/java/com/getcapacitor/myapp/ExampleUnitTest.java","apps/web/android/build.gradle","apps/web/android/capacitor.settings.gradle","apps/web/android/gradle.properties","apps/web/android/gradle/wrapper/gradle-wrapper.jar","apps/web/android/gradle/wrapper/gradle-wrapper.properties","apps/web/android/gradlew","apps/web/android/gradlew.bat","apps/web/android/settings.gradle","apps/web/android/variables.gradle","apps/web/capacitor.config.ts","apps/web/ios/.gitignore","apps/web/ios/App/App.xcodeproj/project.pbxproj","apps/web/ios/App/App.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist","apps/web/ios/App/App/AppDelegate.swift","apps/web/ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-512@2x.png","apps/web/ios/App/App/Assets.xcassets/AppIcon.appiconset/Contents.json","apps/web/ios/App/App/Assets.xcassets/Contents.json","apps/web/ios/App/App/Assets.xcassets/Splash.imageset/Contents.json","apps/web/ios/App/App/Assets.xcassets/Splash.imageset/splash-2732x2732-1.png","apps/web/ios/App/App/Assets.xcassets/Splash.imageset/splash-2732x2732-2.png","apps/web/ios/App/App/Assets.xcassets/Splash.imageset/splash-2732x2732.png","apps/web/ios/App/App/Base.lproj/LaunchScreen.storyboard","apps/web/ios/App/App/Base.lproj/Main.storyboard","apps/web/ios/App/App/Info.plist","apps/web/ios/App/CapApp-SPM/.gitignore","apps/web/ios/App/CapApp-SPM/Package.swift","apps/web/ios/App/CapApp-SPM/README.md","apps/web/ios/App/CapApp-SPM/Sources/CapApp-SPM/CapApp-SPM.swift","apps/web/ios/debug.xcconfig","apps/web/public/assets/digital-employees/operations-specialist.png","apps/web/src/app/api/auth/config/route.ts","apps/web/src/app/api/auth/exchange/route.ts","apps/web/src/components/workbench/PageMetricStrip.tsx","apps/web/src/features/actors/api/actors-api.ts","apps/web/src/features/actors/components/DigitalEmployeeOnboarding.tsx","apps/web/src/features/actors/hooks/use-actor-mutations.ts","apps/web/src/features/actors/hooks/use-actors.ts","apps/web/src/features/auth/api/auth-api.ts","apps/web/src/features/auth/components/AuthGate.tsx","apps/web/src/features/auth/lib/oidc.ts","apps/web/src/features/permissions/api/permissions-api.ts","apps/web/src/features/permissions/components/PermissionAssignmentsPanel.tsx","apps/web/src/features/permissions/hooks/use-permissions.ts","apps/web/src/store/useAuthStore.ts","deploy/production/otel-collector.yml","deploy/production/tempo.yml","design-qa.md","docs/operations/mobile-android-runbook.md","packages/contracts/src/actor.test.ts","packages/contracts/src/health.test.ts","packages/contracts/src/health.ts","packages/contracts/src/rls.test.ts","packages/contracts/src/rls.ts","packages/observability/src/http-route.ts","packages/observability/src/tracing.test.ts","packages/observability/src/tracing.ts","reports/auth-startup.latest.json","reports/capacity-envelope.latest.json","reports/db-credential-separation.latest.json","reports/dependency-resilience.latest.json","reports/mobile-android.latest.json","reports/mobile-export.latest.json","reports/multi-instance.latest.json","reports/redis-auth-live.latest.json","reports/rls.latest.json","reports/trace-backend.latest.json","reports/tracing.latest.json","reports/write-capacity.latest.json","scripts/build-mobile-export.mjs","scripts/check-auth-startup.mjs","scripts/check-capacity-envelope.mjs","scripts/check-db-credential-separation.mjs","scripts/check-dependency-resilience.mjs","scripts/check-mobile-export.mjs","scripts/check-multi-instance.mjs","scripts/check-redis-auth-live.mjs","scripts/check-rls.mjs","scripts/check-trace-backend.mjs","scripts/check-tracing.mjs","scripts/check-write-capacity.mjs","scripts/lib/db-runtime-role.mjs","scripts/mock-oidc-idp.mjs","scripts/provision-runtime-role.mjs"],"removed":[],"modified":[".github/workflows/governance.yml","CLAUDE.md","README.md","apps/api-fastify/prisma/schema.prisma","apps/api-fastify/src/app.ts","apps/api-fastify/src/modules/actors.ts","apps/api-fastify/src/modules/tenant.ts","apps/api-fastify/src/modules/work/runtimes.service.ts","apps/api-fastify/src/modules/work/tasks.service.ts","apps/api-fastify/src/plugins/job-intent-dispatcher.ts","apps/api-fastify/src/plugins/operations.ts","apps/api-fastify/src/plugins/outbox.ts","apps/api-fastify/src/plugins/prisma.ts","apps/api-fastify/src/plugins/queue.ts","apps/api-fastify/src/plugins/trigger-engine.ts","apps/api-fastify/src/routes/actors.ts","apps/api-fastify/src/routes/health.ts","apps/api-fastify/src/routes/jobs.ts","apps/api-fastify/src/routes/realtime-stats.ts","apps/api-fastify/src/routes/roles.ts","apps/api-fastify/src/routes/sse.ts","apps/api-fastify/src/routes/users.ts","apps/api-fastify/src/routes/work.ts","apps/api-fastify/src/server.ts","apps/api-fastify/src/types.ts","apps/api-fastify/test/actor-events.integration.test.ts","apps/api-fastify/test/http.acceptance.test.ts","apps/api-fastify/test/job-intent.dispatcher.test.ts","apps/api-fastify/test/outbox.deadletter.test.ts","apps/api-nestjs/prisma/schema.prisma","apps/api-nestjs/scripts/behavior-parity-snapshot.mjs","apps/api-nestjs/src/actors/actors.controller.ts","apps/api-nestjs/src/actors/actors.service.ts","apps/api-nestjs/src/app.module.ts","apps/api-nestjs/src/common/tenant.decorator.ts","apps/api-nestjs/src/create-app.ts","apps/api-nestjs/src/events/events.module.ts","apps/api-nestjs/src/events/outbox-dispatcher.service.ts","apps/api-nestjs/src/events/realtime-stats.controller.ts","apps/api-nestjs/src/health/health.controller.ts","apps/api-nestjs/src/main.ts","apps/api-nestjs/src/operations/operations.module.ts","apps/api-nestjs/src/prisma/prisma.service.ts","apps/api-nestjs/src/queue/job-intent-dispatcher.service.ts","apps/api-nestjs/src/queue/jobs.controller.ts","apps/api-nestjs/src/queue/jobs.processor.ts","apps/api-nestjs/src/queue/queue.types.ts","apps/api-nestjs/src/roles/roles.controller.ts","apps/api-nestjs/src/roles/roles.module.ts","apps/api-nestjs/src/triggers/trigger-engine.service.ts","apps/api-nestjs/src/users/users.controller.ts","apps/api-nestjs/src/work/runtimes.service.ts","apps/api-nestjs/src/work/tasks.controller.ts","apps/api-nestjs/src/work/tasks.service.ts","apps/api-nestjs/src/work/work.module.ts","apps/api-nestjs/test/actor-events.integration.test.ts","apps/api-nestjs/test/http.acceptance.test.ts","apps/api-nestjs/test/job-intent.dispatcher.test.ts","apps/api-nestjs/test/outbox.deadletter.test.ts","apps/web/e2e/acceptance.spec.ts","apps/web/eslint.config.mjs","apps/web/next.config.ts","apps/web/package.json","apps/web/src/app/page.tsx","apps/web/src/components/ProjectsPanel.tsx","apps/web/src/components/RoleAssignmentsPanel.tsx","apps/web/src/components/UsersPanel.tsx","apps/web/src/components/views/AutomationView.tsx","apps/web/src/components/views/SystemView.tsx","apps/web/src/components/views/TeamView.tsx","apps/web/src/components/views/WorkbenchView.tsx","apps/web/src/components/workbench/TaskDetail.tsx","apps/web/src/hooks/useRealtime.ts","apps/web/src/lib/api.ts","apps/web/src/lib/state-theme.ts","apps/web/src/lib/types.ts","apps/web/src/store/realtime.ts","deploy/production/.env.production.example","deploy/production/Dockerfile","deploy/production/alerts.yml","deploy/production/compose.yml","deploy/production/prometheus.yml","docs/adr/0009-dual-backend-governance-parity.md","docs/domain/owner-matrix.md","docs/domain/work-blueprint.md","docs/governance-experience.md","docs/operations/production-runbook.md","docs/standards/database-standard.md","governance.registry.json","governance.registry.schema.json","output/pdf/任务驱动的数字员工执行闭环.pdf","package.json","packages/contracts/src/actor.ts","packages/contracts/src/contracts.test.ts","packages/contracts/src/index.ts","packages/contracts/src/job.ts","packages/contracts/src/realtime.ts","packages/contracts/src/tenant.ts","packages/contracts/src/user.ts","packages/observability/package.json","packages/observability/src/index.test.ts","packages/observability/src/index.ts","pnpm-lock.yaml","reports/agent-adapters.latest.json","reports/baseline.json","reports/contract-consumers.latest.json","reports/docs-truth.latest.json","reports/dual-backend-behavior.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/operations.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/ui-fastify-acceptance.latest.json","reports/ui-nestjs-acceptance.latest.json","reports/validation-source.latest.json","scripts/check-dual-backend-behavior.mjs","scripts/check-dual-backend-parity.mjs","scripts/check-fork-readiness.mjs","scripts/check-operations.mjs","scripts/check-runtime-acceptance.mjs","scripts/check-ui-acceptance.mjs","scripts/governance-report.mjs","scripts/lib/scan-ignore.mjs","tmp/pdfs/generate_task_loop_pdf.py"]},{"id":"4f2e17b9c3aa4745c5acebadabdd979e0a7ee7f4","message":"Harden governance runtime and acceptance coverage\n","url":"https://gitea.g-hi.com/luoanwu/digital-employee-os/commit/4f2e17b9c3aa4745c5acebadabdd979e0a7ee7f4","author":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"verification":null,"timestamp":"2026-08-21T08:36:22-07:00","added":[".dockerignore","apps/api-fastify/prisma/migrations/20260825030000_skill_activation/migration.sql","apps/api-fastify/src/plugins/operations.ts","apps/api-nestjs/prisma/migrations/20260825030000_skill_activation/migration.sql","apps/api-nestjs/scripts/behavior-parity-snapshot.mjs","apps/api-nestjs/src/common/api-http-exception.filter.ts","apps/api-nestjs/src/operations/operations.module.ts","apps/web/src/features/skills/api/skills-api.ts","apps/web/src/features/skills/components/SkillManagementPanel.tsx","apps/web/src/features/skills/hooks/use-skills.ts","deploy/production/.env.production.example","deploy/production/Dockerfile","deploy/production/alertmanager.yml","deploy/production/alerts.yml","deploy/production/compose.yml","deploy/production/nginx.conf.template","deploy/production/prometheus.yml","docs/operations/production-runbook.md","packages/observability/package.json","packages/observability/src/index.test.ts","packages/observability/src/index.ts","packages/observability/tsconfig.json","packages/skill-runtime/package.json","packages/skill-runtime/src/implementations/analysis-v1.ts","packages/skill-runtime/src/implementations/customer-research-v1.ts","packages/skill-runtime/src/implementations/knowledge-synthesis-v1-1.ts","packages/skill-runtime/src/implementations/knowledge-synthesis-v1-2.ts","packages/skill-runtime/src/implementations/reporting-v1.ts","packages/skill-runtime/src/implementations/reporting-v2.ts","packages/skill-runtime/src/index.test.ts","packages/skill-runtime/src/index.ts","packages/skill-runtime/src/prompt.ts","packages/skill-runtime/src/types.ts","packages/skill-runtime/tsconfig.json","reports/dual-backend-behavior.latest.json","reports/operations.latest.json","reports/ui-fastify-acceptance.latest.json","reports/ui-nestjs-acceptance.latest.json","scripts/check-dual-backend-behavior.mjs","scripts/check-operations.mjs","scripts/check-ui-all.mjs","scripts/ops/backup.sh","scripts/ops/paging-relay.mjs","scripts/ops/restore.sh","scripts/replay-dead-letter.mjs","tmp/deploy-probe-nestjs/.env.example","tmp/deploy-probe-nestjs/docker-compose.yml","tmp/deploy-probe-nestjs/nest-cli.json","tmp/deploy-probe-nestjs/package.json","tmp/deploy-probe-nestjs/prisma/migrations/20260818000000_init/migration.sql","tmp/deploy-probe-nestjs/prisma/migrations/20260819000000_outbox_replay_cursor/migration.sql","tmp/deploy-probe-nestjs/prisma/migrations/20260820000000_work_slice/migration.sql","tmp/deploy-probe-nestjs/prisma/migrations/20260821000000_learning_slice/migration.sql","tmp/deploy-probe-nestjs/prisma/migrations/20260822000000_trigger_slice/migration.sql","tmp/deploy-probe-nestjs/prisma/migrations/20260823000000_outcome_slice/migration.sql","tmp/deploy-probe-nestjs/prisma/migrations/20260824000000_attribution_slice/migration.sql","tmp/deploy-probe-nestjs/prisma/migrations/20260825000000_role_assignment/migration.sql","tmp/deploy-probe-nestjs/prisma/migrations/20260825010000_workgraph_slice/migration.sql","tmp/deploy-probe-nestjs/prisma/migrations/20260825020000_job_intent/migration.sql","tmp/deploy-probe-nestjs/prisma/migrations/20260825030000_skill_activation/migration.sql","tmp/deploy-probe-nestjs/prisma/migrations/migration_lock.toml","tmp/deploy-probe-nestjs/prisma/schema.prisma","tmp/deploy-probe-nestjs/prisma/seed.ts","tmp/deploy-probe-nestjs/scripts/behavior-parity-snapshot.mjs","tmp/deploy-probe-nestjs/src/actors/actor-events.service.ts","tmp/deploy-probe-nestjs/src/actors/actors.controller.ts","tmp/deploy-probe-nestjs/src/actors/actors.module.ts","tmp/deploy-probe-nestjs/src/actors/actors.service.ts","tmp/deploy-probe-nestjs/src/app.module.ts","tmp/deploy-probe-nestjs/src/common/api-http-exception.filter.ts","tmp/deploy-probe-nestjs/src/common/envelope.ts","tmp/deploy-probe-nestjs/src/common/tenant.decorator.ts","tmp/deploy-probe-nestjs/src/common/zod-validation.pipe.ts","tmp/deploy-probe-nestjs/src/create-app.ts","tmp/deploy-probe-nestjs/src/events/connection-registry.service.ts","tmp/deploy-probe-nestjs/src/events/event-bus.service.ts","tmp/deploy-probe-nestjs/src/events/events.gateway.ts","tmp/deploy-probe-nestjs/src/events/events.module.ts","tmp/deploy-probe-nestjs/src/events/fanout.service.ts","tmp/deploy-probe-nestjs/src/events/outbox-dispatcher.service.ts","tmp/deploy-probe-nestjs/src/events/realtime-stats.controller.ts","tmp/deploy-probe-nestjs/src/events/replay.service.ts","tmp/deploy-probe-nestjs/src/health/health.controller.ts","tmp/deploy-probe-nestjs/src/health/health.module.ts","tmp/deploy-probe-nestjs/src/learning/learning.module.ts","tmp/deploy-probe-nestjs/src/learning/learning.service.ts","tmp/deploy-probe-nestjs/src/main.ts","tmp/deploy-probe-nestjs/src/outcomes/outcomes.controller.ts","tmp/deploy-probe-nestjs/src/outcomes/outcomes.module.ts","tmp/deploy-probe-nestjs/src/outcomes/outcomes.service.ts","tmp/deploy-probe-nestjs/src/prisma/prisma.module.ts","tmp/deploy-probe-nestjs/src/prisma/prisma.service.ts","tmp/deploy-probe-nestjs/src/queue/job-intent-dispatcher.service.ts","tmp/deploy-probe-nestjs/src/queue/jobs.controller.ts","tmp/deploy-probe-nestjs/src/queue/jobs.processor.ts","tmp/deploy-probe-nestjs/src/queue/queue.module.ts","tmp/deploy-probe-nestjs/src/queue/queue.types.ts","tmp/deploy-probe-nestjs/src/redis/redis.module.ts","tmp/deploy-probe-nestjs/src/roles/roles.controller.ts","tmp/deploy-probe-nestjs/src/roles/roles.module.ts","tmp/deploy-probe-nestjs/src/roles/roles.service.ts","tmp/deploy-probe-nestjs/src/sse/sse.controller.ts","tmp/deploy-probe-nestjs/src/sse/sse.module.ts","tmp/deploy-probe-nestjs/src/statemachine/index.ts","tmp/deploy-probe-nestjs/src/statemachine/statemachine.engine.ts","tmp/deploy-probe-nestjs/src/statemachine/statemachine.types.ts","tmp/deploy-probe-nestjs/src/triggers/trigger-engine.service.ts","tmp/deploy-probe-nestjs/src/triggers/triggers.controller.ts","tmp/deploy-probe-nestjs/src/triggers/triggers.module.ts","tmp/deploy-probe-nestjs/src/triggers/triggers.service.ts","tmp/deploy-probe-nestjs/src/users/users.controller.ts","tmp/deploy-probe-nestjs/src/users/users.module.ts","tmp/deploy-probe-nestjs/src/users/users.service.ts","tmp/deploy-probe-nestjs/src/work/grants.service.ts","tmp/deploy-probe-nestjs/src/work/projects.controller.ts","tmp/deploy-probe-nestjs/src/work/projects.service.ts","tmp/deploy-probe-nestjs/src/work/runtimes.service.ts","tmp/deploy-probe-nestjs/src/work/skills.controller.ts","tmp/deploy-probe-nestjs/src/work/skills.service.ts","tmp/deploy-probe-nestjs/src/work/task-events.service.ts","tmp/deploy-probe-nestjs/src/work/tasks.controller.ts","tmp/deploy-probe-nestjs/src/work/tasks.service.ts","tmp/deploy-probe-nestjs/src/work/work.module.ts","tmp/deploy-probe-nestjs/test/actor-events.integration.test.ts","tmp/deploy-probe-nestjs/test/auth.acceptance.test.ts","tmp/deploy-probe-nestjs/test/auth.jwks.acceptance.test.ts","tmp/deploy-probe-nestjs/test/auth.roles.acceptance.test.ts","tmp/deploy-probe-nestjs/test/auth.rs256.acceptance.test.ts","tmp/deploy-probe-nestjs/test/dead-letters.integration.test.ts","tmp/deploy-probe-nestjs/test/http.acceptance.test.ts","tmp/deploy-probe-nestjs/test/job-intent.dispatcher.test.ts","tmp/deploy-probe-nestjs/test/learning.concurrency.test.ts","tmp/deploy-probe-nestjs/test/llm.acceptance.test.ts","tmp/deploy-probe-nestjs/test/llm.anthropic.acceptance.test.ts","tmp/deploy-probe-nestjs/test/outbox.concurrency.test.ts","tmp/deploy-probe-nestjs/test/outbox.deadletter.test.ts","tmp/deploy-probe-nestjs/test/outcomes.integration.test.ts","tmp/deploy-probe-nestjs/test/realtime.command.test.ts","tmp/deploy-probe-nestjs/test/realtime.replay.test.ts","tmp/deploy-probe-nestjs/test/realtime.stats.test.ts","tmp/deploy-probe-nestjs/test/realtime.subscription.test.ts","tmp/deploy-probe-nestjs/test/realtime.tenant.test.ts","tmp/deploy-probe-nestjs/test/task-events.integration.test.ts","tmp/deploy-probe-nestjs/test/triggers.integration.test.ts","tmp/deploy-probe-nestjs/test/work.integration.test.ts","tmp/deploy-probe-nestjs/tsconfig.build.json","tmp/deploy-probe-nestjs/tsconfig.json","tmp/deploy-probe-nestjs/vitest.config.ts","tmp/ops-config/.env.production","tmp/ops-config/metrics-token.txt","tmp/pdfs/generate_task_loop_pdf.py","tmp/pdfs/task-loop-qa-v2/page-01.png","tmp/pdfs/task-loop-qa-v2/page-02.png","tmp/pdfs/task-loop-qa-v2/page-03.png","tmp/pdfs/task-loop-qa-v2/page-04.png","tmp/pdfs/task-loop-qa-v2/page-05.png","tmp/pdfs/task-loop-qa-v2/page-06.png","tmp/pdfs/task-loop-qa-v2/page-07.png","tmp/pdfs/task-loop-qa-v2/page-08.png","tmp/pdfs/task-loop-qa-v2/page-09.png","tmp/pdfs/task-loop-qa-v2/page-10.png","tmp/pdfs/task-loop-qa-v2/page-11.png","tmp/pdfs/task-loop-qa-v2/page-12.png","tmp/pdfs/task-loop-qa-v2/page-13.png","tmp/pdfs/task-loop-qa-v2/page-14.png","tmp/pdfs/task-loop-qa-v2/page-15.png","tmp/pdfs/task-loop-qa-v3/contact-sheet.png","tmp/pdfs/task-loop-qa-v3/delivery-01.png","tmp/pdfs/task-loop-qa-v3/delivery-02.png","tmp/pdfs/task-loop-qa-v3/delivery-03.png","tmp/pdfs/task-loop-qa-v3/delivery-04.png","tmp/pdfs/task-loop-qa-v3/delivery-05.png","tmp/pdfs/task-loop-qa-v3/delivery-06.png","tmp/pdfs/task-loop-qa-v3/delivery-07.png","tmp/pdfs/task-loop-qa-v3/delivery-08.png","tmp/pdfs/task-loop-qa-v3/delivery-09.png","tmp/pdfs/task-loop-qa-v3/delivery-10.png","tmp/pdfs/task-loop-qa-v3/delivery-11.png","tmp/pdfs/task-loop-qa-v3/delivery-12.png","tmp/pdfs/task-loop-qa-v3/delivery-13.png","tmp/pdfs/task-loop-qa-v3/delivery-14.png","tmp/pdfs/task-loop-qa-v3/delivery-15.png","tmp/pdfs/task-loop-qa-v3/delivery-contact-sheet.png","tmp/pdfs/task-loop-qa-v3/final-01.png","tmp/pdfs/task-loop-qa-v3/final-02.png","tmp/pdfs/task-loop-qa-v3/final-03.png","tmp/pdfs/task-loop-qa-v3/final-04.png","tmp/pdfs/task-loop-qa-v3/final-05.png","tmp/pdfs/task-loop-qa-v3/final-06.png","tmp/pdfs/task-loop-qa-v3/final-07.png","tmp/pdfs/task-loop-qa-v3/final-08.png","tmp/pdfs/task-loop-qa-v3/final-09.png","tmp/pdfs/task-loop-qa-v3/final-10.png","tmp/pdfs/task-loop-qa-v3/final-11.png","tmp/pdfs/task-loop-qa-v3/final-12.png","tmp/pdfs/task-loop-qa-v3/final-13.png","tmp/pdfs/task-loop-qa-v3/final-14.png","tmp/pdfs/task-loop-qa-v3/final-15.png","tmp/pdfs/task-loop-qa-v3/final-contact-sheet.png","tmp/pdfs/task-loop-qa-v3/final-page-13.png","tmp/pdfs/task-loop-qa-v3/page-01.png","tmp/pdfs/task-loop-qa-v3/page-02.png","tmp/pdfs/task-loop-qa-v3/page-03.png","tmp/pdfs/task-loop-qa-v3/page-04.png","tmp/pdfs/task-loop-qa-v3/page-05.png","tmp/pdfs/task-loop-qa-v3/page-06.png","tmp/pdfs/task-loop-qa-v3/page-07.png","tmp/pdfs/task-loop-qa-v3/page-08.png","tmp/pdfs/task-loop-qa-v3/page-09.png","tmp/pdfs/task-loop-qa-v3/page-10.png","tmp/pdfs/task-loop-qa-v3/page-11.png","tmp/pdfs/task-loop-qa-v3/page-12.png","tmp/pdfs/task-loop-qa-v3/page-13.png","tmp/pdfs/task-loop-qa-v3/page-14.png","tmp/pdfs/task-loop-qa-v3/page-15.png","tmp/pdfs/task-loop-qa/page-01.png","tmp/pdfs/task-loop-qa/page-02.png","tmp/pdfs/task-loop-qa/page-03.png","tmp/pdfs/task-loop-qa/page-04.png","tmp/pdfs/task-loop-qa/page-05.png","tmp/pdfs/task-loop-qa/page-06.png","tmp/pdfs/task-loop-qa/page-07.png","tmp/pdfs/task-loop-qa/page-08.png","tmp/pdfs/task-loop-qa/page-09.png","tmp/pdfs/task-loop-qa/page-10.png","tmp/pdfs/task-loop-qa/page-11.png","tmp/pdfs/task-loop-qa/page-12.png","tmp/pdfs/task-loop-qa/page-13.png"],"removed":[],"modified":[".gitignore","CLAUDE.md","README.md","apps/api-fastify/package.json","apps/api-fastify/prisma/schema.prisma","apps/api-fastify/src/app.ts","apps/api-fastify/src/modules/learning.service.ts","apps/api-fastify/src/modules/roles.service.ts","apps/api-fastify/src/modules/work/runtimes.service.ts","apps/api-fastify/src/modules/work/skills.service.ts","apps/api-fastify/src/plugins/events.ts","apps/api-fastify/src/plugins/outbox.ts","apps/api-fastify/src/plugins/queue.ts","apps/api-fastify/src/plugins/trigger-engine.ts","apps/api-fastify/src/routes/realtime-stats.ts","apps/api-fastify/src/routes/roles.ts","apps/api-fastify/src/routes/skills.ts","apps/api-fastify/src/server.ts","apps/api-fastify/src/types.ts","apps/api-fastify/test/auth.roles.acceptance.test.ts","apps/api-fastify/test/dead-letters.integration.test.ts","apps/api-fastify/test/http.acceptance.test.ts","apps/api-fastify/test/llm.acceptance.test.ts","apps/api-fastify/test/realtime.stats.test.ts","apps/api-fastify/test/work.integration.test.ts","apps/api-nestjs/package.json","apps/api-nestjs/prisma/schema.prisma","apps/api-nestjs/prisma/seed.ts","apps/api-nestjs/src/app.module.ts","apps/api-nestjs/src/create-app.ts","apps/api-nestjs/src/events/events.module.ts","apps/api-nestjs/src/events/realtime-stats.controller.ts","apps/api-nestjs/src/learning/learning.service.ts","apps/api-nestjs/src/main.ts","apps/api-nestjs/src/queue/jobs.processor.ts","apps/api-nestjs/src/roles/roles.controller.ts","apps/api-nestjs/src/roles/roles.service.ts","apps/api-nestjs/src/triggers/trigger-engine.service.ts","apps/api-nestjs/src/triggers/triggers.service.ts","apps/api-nestjs/src/work/runtimes.service.ts","apps/api-nestjs/src/work/skills.controller.ts","apps/api-nestjs/src/work/skills.service.ts","apps/api-nestjs/test/auth.roles.acceptance.test.ts","apps/api-nestjs/test/dead-letters.integration.test.ts","apps/api-nestjs/test/http.acceptance.test.ts","apps/api-nestjs/test/llm.acceptance.test.ts","apps/api-nestjs/test/realtime.stats.test.ts","apps/api-nestjs/test/work.integration.test.ts","apps/web/e2e/acceptance.spec.ts","apps/web/next.config.ts","apps/web/package.json","apps/web/playwright.config.ts","apps/web/src/components/views/SystemView.tsx","apps/web/src/components/views/TeamView.tsx","apps/web/src/hooks/useRealtime.ts","apps/web/src/lib/api.ts","apps/web/src/lib/state-theme.ts","apps/web/src/lib/types.ts","docs/adr/0009-dual-backend-governance-parity.md","docs/domain-glossary.md","docs/domain/learning-blueprint.md","docs/domain/llm-execution-blueprint.md","docs/domain/owner-matrix.md","docs/domain/work-blueprint.md","docs/governance-experience.md","governance.registry.json","governance.registry.schema.json","output/pdf/任务驱动的数字员工执行闭环.pdf","package.json","packages/contracts/src/contracts.test.ts","packages/contracts/src/learning.test.ts","packages/contracts/src/learning.ts","packages/contracts/src/llm.test.ts","packages/contracts/src/llm.ts","packages/contracts/src/realtime-stats.ts","packages/contracts/src/realtime.ts","packages/contracts/src/skill.test.ts","packages/contracts/src/skill.ts","packages/contracts/src/tenant.ts","pnpm-lock.yaml","reports/agent-adapters.latest.json","reports/baseline.json","reports/contract-consumers.latest.json","reports/docs-truth.latest.json","reports/dual-backend-parity.latest.json","reports/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-dual-backend-parity.mjs","scripts/check-fork-readiness.mjs","scripts/check-runtime-acceptance.mjs","scripts/check-ui-acceptance.mjs","scripts/governance-report.mjs","turbo.json"]},{"id":"f6ea2efbccafe9df16c29fd2f3ee80cedd159338","message":"feat: 完善可靠作业交接与产品手册\n","url":"https://gitea.g-hi.com/luoanwu/digital-employee-os/commit/f6ea2efbccafe9df16c29fd2f3ee80cedd159338","author":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"verification":null,"timestamp":"2026-08-20T06:47:23-07:00","added":["apps/api-fastify/prisma/migrations/20260825020000_job_intent/migration.sql","apps/api-fastify/src/plugins/job-intent-dispatcher.ts","apps/api-fastify/test/job-intent.dispatcher.test.ts","apps/api-nestjs/prisma/migrations/20260825020000_job_intent/migration.sql","apps/api-nestjs/src/queue/job-intent-dispatcher.service.ts","apps/api-nestjs/test/job-intent.dispatcher.test.ts","output/pdf/任务驱动的数字员工执行闭环.pdf","outputs/Digital_Employee_OS_产品使用手册_V1.0.docx","outputs/Digital_Employee_OS_产品说明书_V1.0.docx","work/product-manual/build_user_manual.py","work/product-manual/render-final/page-1.png","work/product-manual/render-final/page-10.png","work/product-manual/render-final/page-11.png","work/product-manual/render-final/page-12.png","work/product-manual/render-final/page-13.png","work/product-manual/render-final/page-14.png","work/product-manual/render-final/page-15.png","work/product-manual/render-final/page-16.png","work/product-manual/render-final/page-17.png","work/product-manual/render-final/page-18.png","work/product-manual/render-final/page-19.png","work/product-manual/render-final/page-2.png","work/product-manual/render-final/page-20.png","work/product-manual/render-final/page-21.png","work/product-manual/render-final/page-22.png","work/product-manual/render-final/page-23.png","work/product-manual/render-final/page-24.png","work/product-manual/render-final/page-25.png","work/product-manual/render-final/page-26.png","work/product-manual/render-final/page-3.png","work/product-manual/render-final/page-4.png","work/product-manual/render-final/page-5.png","work/product-manual/render-final/page-6.png","work/product-manual/render-final/page-7.png","work/product-manual/render-final/page-8.png","work/product-manual/render-final/page-9.png","work/product-manual/render-v1/Digital_Employee_OS_产品使用手册_V1.0.pdf","work/product-manual/render-v1/page-1.png","work/product-manual/render-v1/page-10.png","work/product-manual/render-v1/page-11.png","work/product-manual/render-v1/page-12.png","work/product-manual/render-v1/page-13.png","work/product-manual/render-v1/page-14.png","work/product-manual/render-v1/page-15.png","work/product-manual/render-v1/page-16.png","work/product-manual/render-v1/page-17.png","work/product-manual/render-v1/page-18.png","work/product-manual/render-v1/page-19.png","work/product-manual/render-v1/page-2.png","work/product-manual/render-v1/page-20.png","work/product-manual/render-v1/page-21.png","work/product-manual/render-v1/page-22.png","work/product-manual/render-v1/page-23.png","work/product-manual/render-v1/page-24.png","work/product-manual/render-v1/page-25.png","work/product-manual/render-v1/page-26.png","work/product-manual/render-v1/page-27.png","work/product-manual/render-v1/page-28.png","work/product-manual/render-v1/page-29.png","work/product-manual/render-v1/page-3.png","work/product-manual/render-v1/page-30.png","work/product-manual/render-v1/page-31.png","work/product-manual/render-v1/page-4.png","work/product-manual/render-v1/page-5.png","work/product-manual/render-v1/page-6.png","work/product-manual/render-v1/page-7.png","work/product-manual/render-v1/page-8.png","work/product-manual/render-v1/page-9.png","work/product-manual/render-v2/Digital_Employee_OS_产品使用手册_V1.0.pdf","work/product-manual/render-v2/page-1.png","work/product-manual/render-v2/page-10.png","work/product-manual/render-v2/page-11.png","work/product-manual/render-v2/page-12.png","work/product-manual/render-v2/page-13.png","work/product-manual/render-v2/page-14.png","work/product-manual/render-v2/page-15.png","work/product-manual/render-v2/page-16.png","work/product-manual/render-v2/page-17.png","work/product-manual/render-v2/page-18.png","work/product-manual/render-v2/page-19.png","work/product-manual/render-v2/page-2.png","work/product-manual/render-v2/page-20.png","work/product-manual/render-v2/page-21.png","work/product-manual/render-v2/page-22.png","work/product-manual/render-v2/page-23.png","work/product-manual/render-v2/page-24.png","work/product-manual/render-v2/page-25.png","work/product-manual/render-v2/page-3.png","work/product-manual/render-v2/page-4.png","work/product-manual/render-v2/page-5.png","work/product-manual/render-v2/page-6.png","work/product-manual/render-v2/page-7.png","work/product-manual/render-v2/page-8.png","work/product-manual/render-v2/page-9.png","work/product-manual/render-v3/page-1.png","work/product-manual/render-v3/page-10.png","work/product-manual/render-v3/page-11.png","work/product-manual/render-v3/page-12.png","work/product-manual/render-v3/page-13.png","work/product-manual/render-v3/page-14.png","work/product-manual/render-v3/page-15.png","work/product-manual/render-v3/page-16.png","work/product-manual/render-v3/page-17.png","work/product-manual/render-v3/page-18.png","work/product-manual/render-v3/page-19.png","work/product-manual/render-v3/page-2.png","work/product-manual/render-v3/page-20.png","work/product-manual/render-v3/page-21.png","work/product-manual/render-v3/page-22.png","work/product-manual/render-v3/page-23.png","work/product-manual/render-v3/page-24.png","work/product-manual/render-v3/page-25.png","work/product-manual/render-v3/page-26.png","work/product-manual/render-v3/page-27.png","work/product-manual/render-v3/page-28.png","work/product-manual/render-v3/page-29.png","work/product-manual/render-v3/page-3.png","work/product-manual/render-v3/page-4.png","work/product-manual/render-v3/page-5.png","work/product-manual/render-v3/page-6.png","work/product-manual/render-v3/page-7.png","work/product-manual/render-v3/page-8.png","work/product-manual/render-v3/page-9.png","work/product-manual/render-v4/page-1.png","work/product-manual/render-v4/page-10.png","work/product-manual/render-v4/page-11.png","work/product-manual/render-v4/page-12.png","work/product-manual/render-v4/page-13.png","work/product-manual/render-v4/page-14.png","work/product-manual/render-v4/page-15.png","work/product-manual/render-v4/page-16.png","work/product-manual/render-v4/page-17.png","work/product-manual/render-v4/page-18.png","work/product-manual/render-v4/page-19.png","work/product-manual/render-v4/page-2.png","work/product-manual/render-v4/page-20.png","work/product-manual/render-v4/page-21.png","work/product-manual/render-v4/page-22.png","work/product-manual/render-v4/page-23.png","work/product-manual/render-v4/page-24.png","work/product-manual/render-v4/page-25.png","work/product-manual/render-v4/page-26.png","work/product-manual/render-v4/page-27.png","work/product-manual/render-v4/page-28.png","work/product-manual/render-v4/page-3.png","work/product-manual/render-v4/page-4.png","work/product-manual/render-v4/page-5.png","work/product-manual/render-v4/page-6.png","work/product-manual/render-v4/page-7.png","work/product-manual/render-v4/page-8.png","work/product-manual/render-v4/page-9.png","work/product-manual/render-v5/page-1.png","work/product-manual/render-v5/page-10.png","work/product-manual/render-v5/page-11.png","work/product-manual/render-v5/page-12.png","work/product-manual/render-v5/page-13.png","work/product-manual/render-v5/page-14.png","work/product-manual/render-v5/page-15.png","work/product-manual/render-v5/page-16.png","work/product-manual/render-v5/page-17.png","work/product-manual/render-v5/page-18.png","work/product-manual/render-v5/page-19.png","work/product-manual/render-v5/page-2.png","work/product-manual/render-v5/page-20.png","work/product-manual/render-v5/page-21.png","work/product-manual/render-v5/page-22.png","work/product-manual/render-v5/page-23.png","work/product-manual/render-v5/page-24.png","work/product-manual/render-v5/page-25.png","work/product-manual/render-v5/page-26.png","work/product-manual/render-v5/page-3.png","work/product-manual/render-v5/page-4.png","work/product-manual/render-v5/page-5.png","work/product-manual/render-v5/page-6.png","work/product-manual/render-v5/page-7.png","work/product-manual/render-v5/page-8.png","work/product-manual/render-v5/page-9.png","work/product-manual/screenshots/01-workbench.png","work/product-manual/screenshots/02-team.png","work/product-manual/screenshots/03-automation.png","work/product-manual/screenshots/04-system.png","work/product-manual/screenshots/05-task-detail-crop.png","work/product-manual/screenshots/05-task-detail.png","work/product-manual/screenshots/06-execution-records-crop.png","work/product-manual/screenshots/06-execution-records.png","work/product-manual/screenshots/07-task-create.png","work/product-manual/screenshots/08-task-more-options.png","work/product-manual/screenshots/09-mobile-workbench.png","work/product_manual/__pycache__/build_product_manual.cpython-312.pyc","work/product_manual/build_product_manual.py","work/product_manual/figure_closed_loop.png","work/product_manual/figure_product_ia.png","work/product_manual/figure_technical_layers.png","work/product_manual/qa_v1/Digital_Employee_OS_产品说明书_V1.0.pdf","work/product_manual/qa_v1/page-1.png","work/product_manual/qa_v1/page-10.png","work/product_manual/qa_v1/page-11.png","work/product_manual/qa_v1/page-12.png","work/product_manual/qa_v1/page-13.png","work/product_manual/qa_v1/page-14.png","work/product_manual/qa_v1/page-15.png","work/product_manual/qa_v1/page-16.png","work/product_manual/qa_v1/page-17.png","work/product_manual/qa_v1/page-18.png","work/product_manual/qa_v1/page-19.png","work/product_manual/qa_v1/page-2.png","work/product_manual/qa_v1/page-3.png","work/product_manual/qa_v1/page-4.png","work/product_manual/qa_v1/page-5.png","work/product_manual/qa_v1/page-6.png","work/product_manual/qa_v1/page-7.png","work/product_manual/qa_v1/page-8.png","work/product_manual/qa_v1/page-9.png","work/product_manual/qa_v10/Digital_Employee_OS_产品说明书_V1.0.pdf","work/product_manual/qa_v10/page-1.png","work/product_manual/qa_v10/page-10.png","work/product_manual/qa_v10/page-11.png","work/product_manual/qa_v10/page-12.png","work/product_manual/qa_v10/page-13.png","work/product_manual/qa_v10/page-14.png","work/product_manual/qa_v10/page-15.png","work/product_manual/qa_v10/page-16.png","work/product_manual/qa_v10/page-17.png","work/product_manual/qa_v10/page-18.png","work/product_manual/qa_v10/page-19.png","work/product_manual/qa_v10/page-2.png","work/product_manual/qa_v10/page-20.png","work/product_manual/qa_v10/page-21.png","work/product_manual/qa_v10/page-22.png","work/product_manual/qa_v10/page-23.png","work/product_manual/qa_v10/page-24.png","work/product_manual/qa_v10/page-25.png","work/product_manual/qa_v10/page-26.png","work/product_manual/qa_v10/page-27.png","work/product_manual/qa_v10/page-28.png","work/product_manual/qa_v10/page-3.png","work/product_manual/qa_v10/page-4.png","work/product_manual/qa_v10/page-5.png","work/product_manual/qa_v10/page-6.png","work/product_manual/qa_v10/page-7.png","work/product_manual/qa_v10/page-8.png","work/product_manual/qa_v10/page-9.png","work/product_manual/qa_v11/Digital_Employee_OS_产品说明书_V1.0.pdf","work/product_manual/qa_v11/a11y.json","work/product_manual/qa_v11/page-1.png","work/product_manual/qa_v11/page-10.png","work/product_manual/qa_v11/page-11.png","work/product_manual/qa_v11/page-12.png","work/product_manual/qa_v11/page-13.png","work/product_manual/qa_v11/page-14.png","work/product_manual/qa_v11/page-15.png","work/product_manual/qa_v11/page-16.png","work/product_manual/qa_v11/page-17.png","work/product_manual/qa_v11/page-18.png","work/product_manual/qa_v11/page-19.png","work/product_manual/qa_v11/page-2.png","work/product_manual/qa_v11/page-20.png","work/product_manual/qa_v11/page-21.png","work/product_manual/qa_v11/page-22.png","work/product_manual/qa_v11/page-23.png","work/product_manual/qa_v11/page-24.png","work/product_manual/qa_v11/page-25.png","work/product_manual/qa_v11/page-26.png","work/product_manual/qa_v11/page-27.png","work/product_manual/qa_v11/page-28.png","work/product_manual/qa_v11/page-29.png","work/product_manual/qa_v11/page-3.png","work/product_manual/qa_v11/page-4.png","work/product_manual/qa_v11/page-5.png","work/product_manual/qa_v11/page-6.png","work/product_manual/qa_v11/page-7.png","work/product_manual/qa_v11/page-8.png","work/product_manual/qa_v11/page-9.png","work/product_manual/qa_v11/style-lint.json","work/product_manual/qa_v2/Digital_Employee_OS_产品说明书_V1.0.pdf","work/product_manual/qa_v2/page-1.png","work/product_manual/qa_v2/page-10.png","work/product_manual/qa_v2/page-11.png","work/product_manual/qa_v2/page-12.png","work/product_manual/qa_v2/page-13.png","work/product_manual/qa_v2/page-14.png","work/product_manual/qa_v2/page-15.png","work/product_manual/qa_v2/page-16.png","work/product_manual/qa_v2/page-17.png","work/product_manual/qa_v2/page-18.png","work/product_manual/qa_v2/page-19.png","work/product_manual/qa_v2/page-2.png","work/product_manual/qa_v2/page-3.png","work/product_manual/qa_v2/page-4.png","work/product_manual/qa_v2/page-5.png","work/product_manual/qa_v2/page-6.png","work/product_manual/qa_v2/page-7.png","work/product_manual/qa_v2/page-8.png","work/product_manual/qa_v2/page-9.png","work/product_manual/qa_v3/Digital_Employee_OS_产品说明书_V1.0.pdf","work/product_manual/qa_v3/page-1.png","work/product_manual/qa_v3/page-10.png","work/product_manual/qa_v3/page-11.png","work/product_manual/qa_v3/page-12.png","work/product_manual/qa_v3/page-13.png","work/product_manual/qa_v3/page-14.png","work/product_manual/qa_v3/page-15.png","work/product_manual/qa_v3/page-16.png","work/product_manual/qa_v3/page-17.png","work/product_manual/qa_v3/page-18.png","work/product_manual/qa_v3/page-19.png","work/product_manual/qa_v3/page-2.png","work/product_manual/qa_v3/page-3.png","work/product_manual/qa_v3/page-4.png","work/product_manual/qa_v3/page-5.png","work/product_manual/qa_v3/page-6.png","work/product_manual/qa_v3/page-7.png","work/product_manual/qa_v3/page-8.png","work/product_manual/qa_v3/page-9.png","work/product_manual/qa_v4/Digital_Employee_OS_产品说明书_V1.0.pdf","work/product_manual/qa_v4/page-1.png","work/product_manual/qa_v4/page-10.png","work/product_manual/qa_v4/page-11.png","work/product_manual/qa_v4/page-12.png","work/product_manual/qa_v4/page-13.png","work/product_manual/qa_v4/page-14.png","work/product_manual/qa_v4/page-15.png","work/product_manual/qa_v4/page-16.png","work/product_manual/qa_v4/page-17.png","work/product_manual/qa_v4/page-18.png","work/product_manual/qa_v4/page-19.png","work/product_manual/qa_v4/page-2.png","work/product_manual/qa_v4/page-3.png","work/product_manual/qa_v4/page-4.png","work/product_manual/qa_v4/page-5.png","work/product_manual/qa_v4/page-6.png","work/product_manual/qa_v4/page-7.png","work/product_manual/qa_v4/page-8.png","work/product_manual/qa_v4/page-9.png","work/product_manual/qa_v5/Digital_Employee_OS_产品说明书_V1.0.pdf","work/product_manual/qa_v5/page-1.png","work/product_manual/qa_v5/page-10.png","work/product_manual/qa_v5/page-11.png","work/product_manual/qa_v5/page-12.png","work/product_manual/qa_v5/page-13.png","work/product_manual/qa_v5/page-14.png","work/product_manual/qa_v5/page-15.png","work/product_manual/qa_v5/page-16.png","work/product_manual/qa_v5/page-17.png","work/product_manual/qa_v5/page-18.png","work/product_manual/qa_v5/page-19.png","work/product_manual/qa_v5/page-2.png","work/product_manual/qa_v5/page-20.png","work/product_manual/qa_v5/page-21.png","work/product_manual/qa_v5/page-22.png","work/product_manual/qa_v5/page-23.png","work/product_manual/qa_v5/page-24.png","work/product_manual/qa_v5/page-25.png","work/product_manual/qa_v5/page-26.png","work/product_manual/qa_v5/page-27.png","work/product_manual/qa_v5/page-28.png","work/product_manual/qa_v5/page-3.png","work/product_manual/qa_v5/page-4.png","work/product_manual/qa_v5/page-5.png","work/product_manual/qa_v5/page-6.png","work/product_manual/qa_v5/page-7.png","work/product_manual/qa_v5/page-8.png","work/product_manual/qa_v5/page-9.png","work/product_manual/qa_v6/Digital_Employee_OS_产品说明书_V1.0.pdf","work/product_manual/qa_v6/page-1.png","work/product_manual/qa_v6/page-10.png","work/product_manual/qa_v6/page-11.png","work/product_manual/qa_v6/page-12.png","work/product_manual/qa_v6/page-13.png","work/product_manual/qa_v6/page-14.png","work/product_manual/qa_v6/page-15.png","work/product_manual/qa_v6/page-16.png","work/product_manual/qa_v6/page-17.png","work/product_manual/qa_v6/page-18.png","work/product_manual/qa_v6/page-19.png","work/product_manual/qa_v6/page-2.png","work/product_manual/qa_v6/page-20.png","work/product_manual/qa_v6/page-21.png","work/product_manual/qa_v6/page-22.png","work/product_manual/qa_v6/page-23.png","work/product_manual/qa_v6/page-24.png","work/product_manual/qa_v6/page-25.png","work/product_manual/qa_v6/page-26.png","work/product_manual/qa_v6/page-27.png","work/product_manual/qa_v6/page-28.png","work/product_manual/qa_v6/page-3.png","work/product_manual/qa_v6/page-4.png","work/product_manual/qa_v6/page-5.png","work/product_manual/qa_v6/page-6.png","work/product_manual/qa_v6/page-7.png","work/product_manual/qa_v6/page-8.png","work/product_manual/qa_v6/page-9.png","work/product_manual/qa_v7/Digital_Employee_OS_产品说明书_V1.0.pdf","work/product_manual/qa_v7/page-1.png","work/product_manual/qa_v7/page-10.png","work/product_manual/qa_v7/page-11.png","work/product_manual/qa_v7/page-12.png","work/product_manual/qa_v7/page-13.png","work/product_manual/qa_v7/page-14.png","work/product_manual/qa_v7/page-15.png","work/product_manual/qa_v7/page-16.png","work/product_manual/qa_v7/page-17.png","work/product_manual/qa_v7/page-18.png","work/product_manual/qa_v7/page-19.png","work/product_manual/qa_v7/page-2.png","work/product_manual/qa_v7/page-20.png","work/product_manual/qa_v7/page-21.png","work/product_manual/qa_v7/page-22.png","work/product_manual/qa_v7/page-23.png","work/product_manual/qa_v7/page-24.png","work/product_manual/qa_v7/page-25.png","work/product_manual/qa_v7/page-26.png","work/product_manual/qa_v7/page-27.png","work/product_manual/qa_v7/page-28.png","work/product_manual/qa_v7/page-3.png","work/product_manual/qa_v7/page-4.png","work/product_manual/qa_v7/page-5.png","work/product_manual/qa_v7/page-6.png","work/product_manual/qa_v7/page-7.png","work/product_manual/qa_v7/page-8.png","work/product_manual/qa_v7/page-9.png","work/product_manual/qa_v8/Digital_Employee_OS_产品说明书_V1.0.pdf","work/product_manual/qa_v8/page-1.png","work/product_manual/qa_v8/page-10.png","work/product_manual/qa_v8/page-11.png","work/product_manual/qa_v8/page-12.png","work/product_manual/qa_v8/page-13.png","work/product_manual/qa_v8/page-14.png","work/product_manual/qa_v8/page-15.png","work/product_manual/qa_v8/page-16.png","work/product_manual/qa_v8/page-17.png","work/product_manual/qa_v8/page-18.png","work/product_manual/qa_v8/page-19.png","work/product_manual/qa_v8/page-2.png","work/product_manual/qa_v8/page-20.png","work/product_manual/qa_v8/page-21.png","work/product_manual/qa_v8/page-22.png","work/product_manual/qa_v8/page-23.png","work/product_manual/qa_v8/page-24.png","work/product_manual/qa_v8/page-25.png","work/product_manual/qa_v8/page-26.png","work/product_manual/qa_v8/page-27.png","work/product_manual/qa_v8/page-28.png","work/product_manual/qa_v8/page-3.png","work/product_manual/qa_v8/page-4.png","work/product_manual/qa_v8/page-5.png","work/product_manual/qa_v8/page-6.png","work/product_manual/qa_v8/page-7.png","work/product_manual/qa_v8/page-8.png","work/product_manual/qa_v8/page-9.png","work/product_manual/qa_v9/Digital_Employee_OS_产品说明书_V1.0.pdf","work/product_manual/qa_v9/page-1.png","work/product_manual/qa_v9/page-10.png","work/product_manual/qa_v9/page-11.png","work/product_manual/qa_v9/page-12.png","work/product_manual/qa_v9/page-13.png","work/product_manual/qa_v9/page-14.png","work/product_manual/qa_v9/page-15.png","work/product_manual/qa_v9/page-16.png","work/product_manual/qa_v9/page-17.png","work/product_manual/qa_v9/page-18.png","work/product_manual/qa_v9/page-19.png","work/product_manual/qa_v9/page-2.png","work/product_manual/qa_v9/page-20.png","work/product_manual/qa_v9/page-21.png","work/product_manual/qa_v9/page-22.png","work/product_manual/qa_v9/page-23.png","work/product_manual/qa_v9/page-24.png","work/product_manual/qa_v9/page-25.png","work/product_manual/qa_v9/page-26.png","work/product_manual/qa_v9/page-27.png","work/product_manual/qa_v9/page-28.png","work/product_manual/qa_v9/page-29.png","work/product_manual/qa_v9/page-3.png","work/product_manual/qa_v9/page-30.png","work/product_manual/qa_v9/page-4.png","work/product_manual/qa_v9/page-5.png","work/product_manual/qa_v9/page-6.png","work/product_manual/qa_v9/page-7.png","work/product_manual/qa_v9/page-8.png","work/product_manual/qa_v9/page-9.png","work/product_manual/render_with_cjk_font.py"],"removed":[],"modified":["CLAUDE.md","apps/api-fastify/prisma/schema.prisma","apps/api-fastify/src/app.ts","apps/api-fastify/src/modules/triggers.service.ts","apps/api-fastify/src/modules/work/runtimes.service.ts","apps/api-fastify/src/plugins/queue.ts","apps/api-fastify/src/routes/work.ts","apps/api-fastify/test/actor-events.integration.test.ts","apps/api-fastify/test/llm.acceptance.test.ts","apps/api-fastify/test/llm.anthropic.acceptance.test.ts","apps/api-fastify/test/outcomes.integration.test.ts","apps/api-fastify/test/task-events.integration.test.ts","apps/api-fastify/test/triggers.integration.test.ts","apps/api-fastify/test/work.integration.test.ts","apps/api-nestjs/prisma/schema.prisma","apps/api-nestjs/src/queue/jobs.processor.ts","apps/api-nestjs/src/queue/queue.module.ts","apps/api-nestjs/src/work/runtimes.service.ts","apps/api-nestjs/src/work/work.module.ts","apps/api-nestjs/test/actor-events.integration.test.ts","apps/api-nestjs/test/llm.acceptance.test.ts","apps/api-nestjs/test/llm.anthropic.acceptance.test.ts","apps/api-nestjs/test/outcomes.integration.test.ts","apps/api-nestjs/test/task-events.integration.test.ts","apps/api-nestjs/test/triggers.integration.test.ts","apps/api-nestjs/test/work.integration.test.ts","docs/domain/owner-matrix.md","docs/domain/work-blueprint.md","docs/governance-experience.md","governance.registry.json","packages/contracts/src/contracts.test.ts","packages/contracts/src/job.ts","packages/contracts/src/runtime.ts","packages/contracts/src/work.test.ts","reports/agent-adapters.latest.json","reports/baseline.json","reports/contract-consumers.latest.json","reports/docs-truth.latest.json","reports/dual-backend-parity.latest.json","reports/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"]}],"total_commits":0,"head_commit":{"id":"55b9c2a0af78b6998bac3614dedc7187e37057ea","message":"merge: 汇合远端治理修复轮(PR #1/#2/#3,e4b6a5e..c0ed754)与本地 C45–C68 大波次\n\n冲突决议(24 文件):\n- reports/baseline:取本地 08-22 棘轮(458 tests / 66 files / 456 cases / 19×2 UI,为远端严格超集)\n- jobs.processor / work.module / queue.ts(fastify):取本地 C26 JobIntent 同事务链(远端 commit 后 queue.add + defaultJobOptions 兜底已被结构性取代;嫁接远端 Redis db NaN 守卫到 Fastify 侧保持双后端对等)\n- roles.service ×2:取本地 C42 审计事务版 + 嫁接远端 RoleAssignmentDto 返回类型接线(PR #3 拍板资产)\n- page.tsx:取本地 C53 会话身份(auth-identity testid,Playwright 依赖)\n- check-ui-acceptance:本地 OIDC 编排 + 远端 F8 注释并集\n- CLAUDE.md:本地 C45–C68 动态区为基底,嫁接远端 F8 行、五层 CI 假红叙事、结果裁决角色闸(G8 ⑫)、own-tests git-tracked 口径注记,快照更新为两远端对齐 c0ed754(run 32380591807 绿)\n\n编号撞号收口:两条时间线独立分配了 C25/C26/C1——远端线三个战役重编号为 C69(runner 自含 contracts 构建 + F8)/ C70(地板采集只认 git 已跟踪)/ C71(队列双注册策略显式化),经验库标题、脚本注释、测试注释同步改引;本地 C25(迟到成功)/C26(JobIntent)/C1(check-naming)编号不变。\n\n合并树证据:静态 pnpm check 全绿(Node 22,本地 dirty 工作区 2026-08-22);双后端 UI 聚合 38/38 绿(伙伴会话实跑,指纹绑定本合并内容)。合并提交自身的远端 CI 以 headSha 定位的 run 为准。\n\nCo-Authored-By: Claude Fable 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/digital-employee-os/commit/55b9c2a0af78b6998bac3614dedc7187e37057ea","author":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"verification":null,"timestamp":"2026-08-22T08:10:56-07:00","added":[],"removed":["apps/api-fastify/pnpm-lock.yaml","apps/api-nestjs/pnpm-lock.yaml","apps/web/pnpm-lock.yaml"],"modified":["CLAUDE.md","apps/api-fastify/.env.example","apps/api-fastify/src/modules/learning.service.ts","apps/api-fastify/src/modules/roles.service.ts","apps/api-fastify/src/modules/triggers.service.ts","apps/api-fastify/src/routes/health.ts","apps/api-fastify/src/routes/outcomes.ts","apps/api-fastify/src/routes/sse.ts","apps/api-fastify/test/auth.roles.acceptance.test.ts","apps/api-fastify/test/http.acceptance.test.ts","apps/api-fastify/test/outcomes.integration.test.ts","apps/api-nestjs/.env.example","apps/api-nestjs/src/app.module.ts","apps/api-nestjs/src/learning/learning.service.ts","apps/api-nestjs/src/outcomes/outcomes.controller.ts","apps/api-nestjs/src/outcomes/outcomes.module.ts","apps/api-nestjs/src/roles/roles.service.ts","apps/api-nestjs/src/triggers/trigger-engine.service.ts","apps/api-nestjs/test/auth.roles.acceptance.test.ts","apps/api-nestjs/test/http.acceptance.test.ts","apps/api-nestjs/test/outcomes.integration.test.ts","apps/web/src/app/layout.tsx","apps/web/src/store/useAppStore.ts","docs/README.md","docs/adr/README.md","docs/governance-experience.md","docs/migration-playbook.md","packages/contracts/package.json","packages/contracts/src/contracts.test.ts","packages/contracts/src/index.ts","packages/contracts/src/job.ts","packages/contracts/src/learning.ts","packages/contracts/src/outcome.ts","packages/contracts/src/realtime-command.ts","packages/contracts/src/tenant.ts","packages/contracts/tsconfig.json","scripts/check-contract-consumers.mjs","scripts/check-fork-readiness.mjs","scripts/check-runtime-acceptance.mjs","scripts/check-ui-acceptance.mjs","scripts/governance-report.mjs","turbo.json"]},"repository":{"id":76,"owner":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"law@g-hi.com","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"name":"digital-employee-os","full_name":"luoanwu/digital-employee-os","description":"","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":1901,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/digital-employee-os/languages","html_url":"https://gitea.g-hi.com/luoanwu/digital-employee-os","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/digital-employee-os","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/digital-employee-os.git","clone_url":"https://gitea.g-hi.com/luoanwu/digital-employee-os.git","original_url":"","website":"","stars_count":0,"forks_count":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-08-20T14:46:28+08:00","updated_at":"2026-08-21T23:43: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
|
3
|
5
|
1787411590
|
1787411987
|
0
|
1787411590
|
1787411987
|
group: governance-${{ github.workflow }}-${{ githu group: governance-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: "true"
...
|
governance-governance.yml-refs/heads/main
|
1
|
Edit
Delete
|
|
23511
|
fix(governance): mobile export runner 自含 contracts fix(governance): mobile export runner 自含 contracts 构建——C69 的 mobile 化身在首轮合并推送 CI 实锤...
|
76
|
5
|
governance.yml
|
12
|
5
|
0
|
refs/heads/main
|
28ea42cca5364bd425358f803436ae5c8f9bc687
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"55b9c2a0af78b6998bac3614dedc7187e37057ea","after":"28ea42cca5364bd425358f803436ae5c8f9bc687","compare_url":"https://gitea.g-hi.com/luoanwu/digital-employee-os/compare/55b9c2a0af78b6998bac3614dedc7187e37057ea...28ea42cca5364bd425358f803436ae5c8f9bc687","commits":[{"id":"28ea42cca5364bd425358f803436ae5c8f9bc687","message":"fix(governance): mobile export runner 自含 contracts 构建——C69 的 mobile 化身在首轮合并推送 CI 实锤\n\nrun 32580980619 静态 job 红判责:check-mobile-export 的正向静态导出直跑 next build,\nweb 运行时入口依赖 @repo/contracts dist;干净 checkout 无残留构建产物即秒崩\n(violations 1 / staticFiles 0 / synced 0),本机因开发期残留 dist 恒绿——与 C69\n「本机恒绿 ≠ 干净环境能跑」同构,是该教训的第三次现身(runtime → UI → mobile)。\n\n- check-mobile-export.mjs:正向导出前自含 `pnpm --filter @repo/contracts build` +\n dist/index.js 存在性断言(M9,防 tsbuildinfo 静默空转),与两验收 runner 同款\n- check-fork-readiness.mjs:F8 绊网从两 runner 扩至三 runner(含 mobile export);\n 负向已验证(拆掉 mobile 构建步 → F8 精确 1 红 → 恢复复绿)\n- CLAUDE.md/AGENTS.md:C69 行与 G14 ② 叙事回灌三 runner 口径与本次实锤\n\nCo-Authored-By: Claude Fable 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/digital-employee-os/commit/28ea42cca5364bd425358f803436ae5c8f9bc687","author":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"verification":null,"timestamp":"2026-08-22T08:19:42-07:00","added":[],"removed":[],"modified":["CLAUDE.md","scripts/check-fork-readiness.mjs","scripts/check-mobile-export.mjs"]}],"total_commits":0,"head_commit":{"id":"28ea42cca5364bd425358f803436ae5c8f9bc687","message":"fix(governance): mobile export runner 自含 contracts 构建——C69 的 mobile 化身在首轮合并推送 CI 实锤\n\nrun 32580980619 静态 job 红判责:check-mobile-export 的正向静态导出直跑 next build,\nweb 运行时入口依赖 @repo/contracts dist;干净 checkout 无残留构建产物即秒崩\n(violations 1 / staticFiles 0 / synced 0),本机因开发期残留 dist 恒绿——与 C69\n「本机恒绿 ≠ 干净环境能跑」同构,是该教训的第三次现身(runtime → UI → mobile)。\n\n- check-mobile-export.mjs:正向导出前自含 `pnpm --filter @repo/contracts build` +\n dist/index.js 存在性断言(M9,防 tsbuildinfo 静默空转),与两验收 runner 同款\n- check-fork-readiness.mjs:F8 绊网从两 runner 扩至三 runner(含 mobile export);\n 负向已验证(拆掉 mobile 构建步 → F8 精确 1 红 → 恢复复绿)\n- CLAUDE.md/AGENTS.md:C69 行与 G14 ② 叙事回灌三 runner 口径与本次实锤\n\nCo-Authored-By: Claude Fable 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/digital-employee-os/commit/28ea42cca5364bd425358f803436ae5c8f9bc687","author":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"verification":null,"timestamp":"2026-08-22T08:19:42-07:00","added":[],"removed":[],"modified":["CLAUDE.md","scripts/check-fork-readiness.mjs","scripts/check-mobile-export.mjs"]},"repository":{"id":76,"owner":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"law@g-hi.com","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"name":"digital-employee-os","full_name":"luoanwu/digital-employee-os","description":"","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":51118,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/digital-employee-os/languages","html_url":"https://gitea.g-hi.com/luoanwu/digital-employee-os","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/digital-employee-os","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/digital-employee-os.git","clone_url":"https://gitea.g-hi.com/luoanwu/digital-employee-os.git","original_url":"","website":"","stars_count":0,"forks_count":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-08-20T14:46:28+08:00","updated_at":"2026-08-22T23:13: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
|
3
|
5
|
1787411988
|
1787412510
|
0
|
1787411987
|
1787412510
|
group: governance-${{ github.workflow }}-${{ githu group: governance-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: "true"
...
|
governance-governance.yml-refs/heads/main
|
1
|
Edit
Delete
|
|
23604
|
Merge branch 'governance/consolidate-20260902& Merge branch 'governance/consolidate-20260902'(整合治理分支 f77fe27 + C29 手工合入 + C31–C36/G21/G30 关闭)...
|
67
|
5
|
governance.yml
|
5
|
5
|
0
|
refs/heads/main
|
03d95db096af66a1e7af7708a99156f194f2c702
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"205116d7e6e0ff602d1773c2ec986b02223b1e0e","after":"03d95db096af66a1e7af7708a99156f194f2c702","compare_url":"https://gitea.g-hi.com/luoanwu/songformer-structure-lyrics/compare/205116d7e6e0ff602d1773c2ec986b02223b1e0e...03d95db096af66a1e7af7708a99156f194f2c702","commits":[{"id":"03d95db096af66a1e7af7708a99156f194f2c702","message":"Merge branch 'governance/consolidate-20260902'(整合治理分支 f77fe27 + C29 手工合入 + C31–C36/G21/G30 关闭)\n\nCo-Authored-By: Claude Fable 5.1 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/songformer-structure-lyrics/commit/03d95db096af66a1e7af7708a99156f194f2c702","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-02T16:39:01-07:00","added":[".agents/skills/business-module-intake/SKILL.md","apps/web/e2e/fixtures/review-workdir/audio-probe-song/alignment.json","apps/web/e2e/fixtures/review-workdir/audio-probe-song/lyrics.txt","apps/web/e2e/fixtures/review-workdir/audio-probe-song/run_inputs.json","apps/web/e2e/fixtures/review-workdir/audio-probe-song/segments/vocal_1.wav","apps/web/e2e/fixtures/review-workdir/audio-probe-song/segments/vocal_2.wav","apps/web/e2e/fixtures/review-workdir/audio-probe-song/status.json","apps/web/e2e/fixtures/review-workdir/audio-probe-song/vocals.wav","apps/web/e2e/fixtures/review-workdir/audio-probe-song_p2/line_times.json","apps/web/e2e/fixtures/review-workdir/fixture-song/alignment.json","apps/web/e2e/fixtures/review-workdir/fixture-song_p2/line_times.json","apps/web/e2e/fixtures/review-workdir/nonaudio-source-probe/run_inputs.json","apps/web/src/app/api/review/edits/route.ts","apps/web/src/app/api/review/full-audio/route.ts","apps/web/src/lib/audio-range.test.ts","apps/web/src/lib/audio-range.ts","apps/web/src/lib/audio-source.ts","apps/web/src/lib/export-format.test.ts","apps/web/src/lib/export-format.ts","apps/web/src/lib/manual-edits.ts","apps/web/src/lib/review-artifacts.test.ts","apps/web/src/lib/review-artifacts.ts","apps/web/src/lib/structure-mode.ts","apps/web/vitest.config.ts","config/structure-modes.v1.json","docs/domain/review-manual-timing-blueprint.md","reports/export-contract.freeze.json","reports/export-contract.latest.json","scripts/check-export-contract.mjs","scripts/download-model-assets.mjs","scripts/lib/agent-adapters.mjs","scripts/lib/provenance.mjs","scripts/normalize-model-manifest.mjs","scripts/setup-model-workers.mjs","scripts/sync-agent-skills.mjs","services/structure_lyrics/phase1/vocal_structure.py","services/structure_lyrics/tests/test_cli_declared.py","services/structure_lyrics/tests/test_ffmpeg_resolution.py","services/structure_lyrics/tests/test_vocal_structure.py","workers/demucs/README.md","复核工作台.dc.html"],"removed":["apps/web/pnpm-lock.yaml"],"modified":[".agents/skills/frontend-api-react/SKILL.md",".agents/skills/frontend-view-react/SKILL.md",".agents/skills/frontend-view-react/references/view-templates.md",".agents/skills/fullstack-7layer-react/SKILL.md",".agents/skills/zustand-store/SKILL.md",".claude/agents/acceptance-runner.md",".claude/launch.json",".claude/skills/business-module-intake/SKILL.md",".claude/skills/frontend-api-react/SKILL.md",".claude/skills/frontend-view-react/SKILL.md",".claude/skills/frontend-view-react/references/view-templates.md",".claude/skills/fullstack-7layer-react/SKILL.md",".claude/skills/zustand-store/SKILL.md",".github/pull_request_template.md",".gitignore","CLAUDE.md","README.md","apps/web/e2e/acceptance.spec.ts","apps/web/package.json","apps/web/playwright.config.ts","apps/web/src/app/api/review/audio/route.ts","apps/web/src/app/api/review/browse/route.ts","apps/web/src/app/api/review/export/route.ts","apps/web/src/app/api/review/route.ts","apps/web/src/app/api/review/run/route.ts","apps/web/src/app/layout.tsx","apps/web/src/app/review/page.tsx","apps/web/src/lib/song-name.ts","apps/web/tailwind.config.ts","apps/web/tsconfig.json","docs/README.md","docs/adr/0001-use-typescript-fullstack.md","docs/adr/0005-use-prisma.md","docs/adr/0008-monorepo-pnpm-turborepo.md","docs/adr/README.md","docs/domain-glossary.md","docs/domain/owner-matrix.md","docs/domain/structure-lyrics-phase1-blueprint.md","docs/governance-experience.md","docs/migration-notes.md","docs/standards/api-standard.md","docs/standards/database-standard.md","docs/standards/frontend-standard.md","docs/standards/git-standard.md","docs/standards/naming-standard.md","docs/standards/review-standard.md","models/model-assets.v1.json","package.json","packages/contracts/package.json","pnpm-lock.yaml","reports/baseline.json","reports/contract-consumers.latest.json","reports/docs-truth.latest.json","reports/dual-backend-parity.latest.json","reports/governance-docs.latest.json","reports/governance.latest.json","reports/migrations.latest.json","reports/model-assets.latest.json","reports/model-evidence/htdemucs-smoke.latest.json","reports/model-evidence/mms-fa-smoke.latest.json","reports/model-evidence/qwen3-asr-smoke.latest.json","reports/model-evidence/structure-smoke.latest.json","reports/naming.latest.json","reports/order-concurrency-guard.latest.json","reports/pipeline-tests.latest.json","reports/runtime-acceptance.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/ui-acceptance.latest.json","reports/validation-source.latest.json","scripts/check-contract-consumers.mjs","scripts/check-docs-truth.mjs","scripts/check-dual-backend-parity.mjs","scripts/check-governance-docs.mjs","scripts/check-migrations.mjs","scripts/check-model-assets.mjs","scripts/check-naming.mjs","scripts/check-order-concurrency-guard.mjs","scripts/check-pipeline-tests.mjs","scripts/check-runtime-acceptance.mjs","scripts/check-schema-sync.mjs","scripts/check-ui-acceptance.mjs","scripts/check-validation-source.mjs","scripts/governance-report.mjs","services/structure_lyrics/README.md","services/structure_lyrics/phase1/asr.py","services/structure_lyrics/phase1/audio.py","services/structure_lyrics/phase1/cli.py","services/structure_lyrics/phase2/pipeline.py","services/structure_lyrics/phase2/refine.py","services/structure_lyrics/requirements.txt","services/structure_lyrics/run_song.py","services/structure_lyrics/tests/test_language.py","services/structure_lyrics/tests/test_phase2.py","services/structure_lyrics/tests/test_tokenize.py","workers/demucs/requirements_demucs.txt","workers/demucs/run_separate.py","workers/mms-fa/run_mms_fa.py","workers/structure/README.md","workers/structure/run_structure.py"]},{"id":"7a871ea9c56ab4dfbb000e4f806a3759a5e962be","message":"治理: 整合三条工作线 + 关闭 C31–C36/G21/G30 + 手工合入 C29(第二台机器 runtime 93 / ui 12 首绿)\n\n整合:本分支基于 origin/governance/adversarial-audit-fixes-20260728(f77fe27),叠加\n2026-08-30 本地模型可移植性工作(models:download / models:verify / models:setup-workers /\nmodels:normalize-manifest;manifest 钉 revision 并剔除 .cache 条目;demucs 捆绑 imageio-ffmpeg;\nstructure worker HF_MODULES_CACHE),并按「不另立第二份查找」手工合入\nclaude/clever-morse-0c9e45(20f1c2e,C29):export-format.ts 纯函数层 + vitest,\nreview-paths.ts 收口进既有 review-artifacts.ts(resolveArtifactPath 泛化,audio 路由同用)。\n\n关闭:\n- C31 治理聚合器 fail-open:runGate() 要求子门禁报告本轮新鲜/可解析/带指标,否则 [gate-failed] 红;\n 禁 `?? -1`/`?? 0` 折算。负向:写报告前 throw、exit 0 不写报告 均精确红\n- C32 模型资产入棘轮(违规只降、资产/文件数只升)+ 磁盘→manifest 未登记即红 + 可复现下载 revision∨uri\n- C33 docs-truth 扩到全部面向人的文档与无反引号 prose,八类新断言;models/ 按 manifest+git 判定\n (防干净检出必红,同时覆盖 G30);首跑 60 处漂移全部逐条订正\n- C34 ffmpeg 解析单源 resolve_ffmpeg(系统 PATH→imageio-ffmpeg),check:pipeline 干净机器不再必红,\n pytest 地板 139→143\n- C35 /api/review/audio 无 Range 致跟播死锁:lib/audio-range.ts 单源,两条音频路由共用,6 例 vitest\n- C36 验收链宿主机污染四连:prisma:generate --concurrency=1 + 验收前置 prisma-generate;脚本钉空\n NEXT_PUBLIC_API_URL/AUTH_TOKEN;删多余 apps/web/pnpm-lock.yaml;Playwright --disable-audio-output\n- G21 多代理适配器同源:.claude/skills 唯一真源,sync:agent-skills 生成 .agents/skills,\n check:governance-docs 比对(缺失/多出/漂移即红);幽灵 PROJECT-PROFILE 引用与假调用文案订正\n- G30 由 C33 覆盖关闭\n\n证据(本地工作区,dirty 状态生成):pnpm check exit 0;check:pipeline 143/143;\ncheck:runtime 93/93(testsPassed 地板 56→93,含 apps/web vitest 37 例);check:ui 12/12\n(UI_WEB_PORT=3141 / UI_API_PORT=3247);MODEL_ASSETS_FULL_HASH=1 42 文件全量哈希绿;\nown-tests 14 / own-test-cases 106。所有负向测试见 docs/governance-experience.md 各条。\n\nCo-Authored-By: Claude Fable 5.1 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/songformer-structure-lyrics/commit/7a871ea9c56ab4dfbb000e4f806a3759a5e962be","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-02T16:38:59-07:00","added":[".agents/skills/business-module-intake/SKILL.md","apps/web/src/lib/audio-range.test.ts","apps/web/src/lib/audio-range.ts","apps/web/src/lib/export-format.test.ts","apps/web/src/lib/export-format.ts","apps/web/src/lib/review-artifacts.test.ts","apps/web/vitest.config.ts","scripts/download-model-assets.mjs","scripts/lib/agent-adapters.mjs","scripts/normalize-model-manifest.mjs","scripts/setup-model-workers.mjs","scripts/sync-agent-skills.mjs","services/structure_lyrics/tests/test_ffmpeg_resolution.py","workers/demucs/README.md"],"removed":["apps/web/pnpm-lock.yaml"],"modified":[".agents/skills/frontend-api-react/SKILL.md",".agents/skills/frontend-view-react/SKILL.md",".agents/skills/frontend-view-react/references/view-templates.md",".agents/skills/fullstack-7layer-react/SKILL.md",".agents/skills/zustand-store/SKILL.md",".claude/agents/acceptance-runner.md",".claude/launch.json",".claude/skills/business-module-intake/SKILL.md",".claude/skills/frontend-api-react/SKILL.md",".claude/skills/frontend-view-react/SKILL.md",".claude/skills/frontend-view-react/references/view-templates.md",".claude/skills/fullstack-7layer-react/SKILL.md",".claude/skills/zustand-store/SKILL.md",".github/pull_request_template.md","CLAUDE.md","README.md","apps/web/package.json","apps/web/playwright.config.ts","apps/web/src/app/api/review/audio/route.ts","apps/web/src/app/api/review/browse/route.ts","apps/web/src/app/api/review/export/route.ts","apps/web/src/app/api/review/full-audio/route.ts","apps/web/src/lib/review-artifacts.ts","apps/web/tailwind.config.ts","apps/web/tsconfig.json","docs/README.md","docs/adr/0001-use-typescript-fullstack.md","docs/adr/0005-use-prisma.md","docs/adr/0008-monorepo-pnpm-turborepo.md","docs/adr/README.md","docs/domain-glossary.md","docs/domain/structure-lyrics-phase1-blueprint.md","docs/governance-experience.md","docs/migration-notes.md","docs/standards/api-standard.md","docs/standards/database-standard.md","docs/standards/frontend-standard.md","docs/standards/git-standard.md","docs/standards/naming-standard.md","docs/standards/review-standard.md","models/model-assets.v1.json","package.json","pnpm-lock.yaml","reports/baseline.json","reports/contract-consumers.latest.json","reports/docs-truth.latest.json","reports/dual-backend-parity.latest.json","reports/governance-docs.latest.json","reports/governance.latest.json","reports/migrations.latest.json","reports/model-assets.latest.json","reports/model-evidence/htdemucs-smoke.latest.json","reports/model-evidence/mms-fa-smoke.latest.json","reports/model-evidence/qwen3-asr-smoke.latest.json","reports/model-evidence/structure-smoke.latest.json","reports/naming.latest.json","reports/order-concurrency-guard.latest.json","reports/pipeline-tests.latest.json","reports/runtime-acceptance.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/ui-acceptance.latest.json","reports/validation-source.latest.json","scripts/check-docs-truth.mjs","scripts/check-governance-docs.mjs","scripts/check-model-assets.mjs","scripts/check-runtime-acceptance.mjs","scripts/check-ui-acceptance.mjs","scripts/governance-report.mjs","services/structure_lyrics/README.md","services/structure_lyrics/phase1/audio.py","services/structure_lyrics/phase1/vocal_structure.py","services/structure_lyrics/requirements.txt","workers/demucs/requirements_demucs.txt","workers/demucs/run_separate.py","workers/structure/README.md","workers/structure/run_structure.py"]},{"id":"f77fe276fc4f6336bb58132bef8e01e83b4c9ea1","message":"fix: 对抗验收 C30——键口径双源静默失败 / 导出与手改不同源 / 会计头幽灵声称;并补视图精度\n\n对刚落地的手改写链做对抗性验收(try-to-break-it),当场抓到三处、全部修复并接入回归:\n- C30①【数据完整性】编辑键口径双源:校验用 Number(\"01\")=1 找得到行、应用用\n String(line_id)=\"1\" 查不到该键 → \"01\" 判合法却不落盘(响应 ok:true/manualLines:0);\n 该行本已有手改时更会被 apply 当\"缺席\"**静默还原**(实测本意改 end=14.5、磁盘回退 13.2)。\n 修法:键统一 ^(0|[1-9]\\d*)$ fail closed,校验与应用共用同一把钥匙\n- C30②【双出口矛盾】export 只查 \u003csong\u003e_p2/ 而手改按两级查找写入 → cli 直跑产出的\n \u003csong\u003e/line_times.json 会「页面看得到手改、导出读不到」。修法:export 收口\n resolveLineTimesPath(与读/写路由同源)\n- C30③【幽灵声称】蓝图两处写 X-Export-Manual-Edits「M1 随做」实则从未实现 → 真加会计头\n- 视图精度(用户新需求):刻度加亚秒档(短歌 16× 从 0 个标签 → 56 个 0.1s 刻度)+\n 标签带小数;zoom-to-line 改「最接近目标占比 1/3」(长拖腔行 19%→38%);字条加刻度栅格\n + 走带上画字条窗口投影(两个时间视图互相定位);读数精度随每像素秒数自适应到 ms 级;\n 字条字块同步逐字高亮 + 播放头;修字条头部窄栏文案与读数交错换行\n- 验收:check:ui 12 用例全绿(新增导出一致性、走带精度两例 + 非规范化键负向断言),\n 地板 ui 10→12、ownTestCases 66→69;pnpm check 静态全链绿;负向测试实证:\n 退回键守卫缺陷形态即精确红在该断言、恢复复绿\n- 判读纪律实证入册:后台通知 exit code 被管道 tail 吞掉(通知 exit 0 / 报告 failed),\n 只认 runner report status 或显式 set -o pipefail\n\nCo-Authored-By: Claude Fable 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/songformer-structure-lyrics/commit/f77fe276fc4f6336bb58132bef8e01e83b4c9ea1","author":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"verification":null,"timestamp":"2026-08-08T11:32:01-07:00","added":[],"removed":[],"modified":["CLAUDE.md","apps/web/e2e/acceptance.spec.ts","apps/web/src/app/api/review/export/route.ts","apps/web/src/app/layout.tsx","apps/web/src/app/review/page.tsx","apps/web/src/lib/manual-edits.ts","docs/domain/review-manual-timing-blueprint.md","reports/baseline.json","reports/contract-consumers.latest.json","reports/docs-truth.latest.json","reports/dual-backend-parity.latest.json","reports/governance-docs.latest.json","reports/governance.latest.json","reports/migrations.latest.json","reports/model-assets.latest.json","reports/naming.latest.json","reports/order-concurrency-guard.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/ui-acceptance.latest.json","reports/validation-source.latest.json"]},{"id":"3fdb4053791bac065674586a5173a8a41aa5a0c4","message":"feat: 复核工作台手改写链 M1——直改产物+留档+拖动/打点/快捷键;走带播放链路补齐机器验收\n\n- 手改(ManualTimingEdit,2026-08-08 六项拍板落地):编辑态(E)走带行区间双手柄拖动、\n 字时间编辑条(局部波形+字块拖动+联动边界+播放同步逐字高亮与播放头)、G29 null 字赋时、\n T 逐字打点(回补 100ms)、[ ] ; ' , . I O 微调与 ⌘Z/⌘S;保存=整卷 PUT 直改\n line_times.json + manual.original 留档(沿 clamped_from 纪律),指纹乐观锁 409 +\n 执行中 409(文件双写者显式登记);重跑 fail closed(409 MANUAL_EDITS_PRESENT →\n confirmDiscardManualEdits)+ 自动备份 .manual-backups/(永不自动套用);reconcile 单源\n lib/manual-edits.ts、产物定位单源 lib/review-artifacts.ts(读/写/守卫共用 _p2 优先);\n 蓝图 docs/domain/review-manual-timing-blueprint.md + owner-matrix 登记\n- 走带整曲播放链路(前一轮未提交部分随本提交入库):/api/review/full-audio(HTTP Range +\n 扩展名白名单,C28 收口)+ audio-source 单源 + audio-probe fixture + 真波形/seek/跟播/\n 双音源互斥 e2e + 深色三栏工作台改版余量\n- 验收:check:ui 10 用例全绿(新增手改用例:真实鼠标拖字块+真实键盘 [+落盘留档回读+\n 重跑 409+还原清 manual+指纹/非法/穿越负向矩阵),地板 ui 7→10、ownTestCases 62→66;\n pnpm check 静态全链绿;备份路径 live 实证(confirm→备份含手改值)\n- 教训入册(G18):浏览器面板按键注入不带 e.code,快捷键实测须真键盘/Playwright;\n 拖动手势收 buttons===0 悬停移动防\"粘手\"(pointerup 窗外丢失实锤)\n\nCo-Authored-By: Claude Fable 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/songformer-structure-lyrics/commit/3fdb4053791bac065674586a5173a8a41aa5a0c4","author":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"verification":null,"timestamp":"2026-08-08T11:10:41-07:00","added":["apps/web/e2e/fixtures/review-workdir/audio-probe-song/alignment.json","apps/web/e2e/fixtures/review-workdir/audio-probe-song/lyrics.txt","apps/web/e2e/fixtures/review-workdir/audio-probe-song/run_inputs.json","apps/web/e2e/fixtures/review-workdir/audio-probe-song/segments/vocal_1.wav","apps/web/e2e/fixtures/review-workdir/audio-probe-song/segments/vocal_2.wav","apps/web/e2e/fixtures/review-workdir/audio-probe-song/status.json","apps/web/e2e/fixtures/review-workdir/audio-probe-song/vocals.wav","apps/web/e2e/fixtures/review-workdir/audio-probe-song_p2/line_times.json","apps/web/e2e/fixtures/review-workdir/nonaudio-source-probe/run_inputs.json","apps/web/src/app/api/review/edits/route.ts","apps/web/src/app/api/review/full-audio/route.ts","apps/web/src/lib/audio-source.ts","apps/web/src/lib/manual-edits.ts","apps/web/src/lib/review-artifacts.ts","docs/domain/review-manual-timing-blueprint.md","复核工作台.dc.html"],"removed":[],"modified":[".claude/launch.json",".gitignore","CLAUDE.md","apps/web/e2e/acceptance.spec.ts","apps/web/src/app/api/review/route.ts","apps/web/src/app/api/review/run/route.ts","apps/web/src/app/review/page.tsx","apps/web/tsconfig.json","docs/domain/owner-matrix.md","packages/contracts/package.json","pnpm-lock.yaml","reports/baseline.json","reports/contract-consumers.latest.json","reports/docs-truth.latest.json","reports/dual-backend-parity.latest.json","reports/governance-docs.latest.json","reports/governance.latest.json","reports/migrations.latest.json","reports/model-assets.latest.json","reports/naming.latest.json","reports/order-concurrency-guard.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/ui-acceptance.latest.json","reports/validation-source.latest.json","scripts/check-ui-acceptance.mjs"]},{"id":"88df9fddc74d13ebbc389e8ca265c8953c06bc22","message":"治理: /review 首个自动化验收——fixture 注入 + G29 null 字芯片用例,UI 地板 6→7\n\n- REVIEW_WORKDIR 注入点 + 仓内确定性 fixture(fixture-song,含 G29 null 时间字)\n- check:ui 第 7 例:字级时间面板渲染 / null 字禁用虚线芯片(title 无对齐证据)/\n 有证据字可点击试听\n- 负向测试:fixture 缺失整轮红且 e2e-results 显示仅新用例 ok:false(其余 6 绿)\n- 地板 uiTestsPassed 6→7、ownTestCases 62→63;报告绑定 gitSha 348939f5\n- 边界如实记:执行链路(C24 重跑刷新)仍无自动化,fixture 用例覆盖不到\n\ncheck / check:ui(7) 本机全绿。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/songformer-structure-lyrics/commit/88df9fddc74d13ebbc389e8ca265c8953c06bc22","author":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"verification":null,"timestamp":"2026-08-01T22:14:08-07:00","added":["apps/web/e2e/fixtures/review-workdir/fixture-song/alignment.json","apps/web/e2e/fixtures/review-workdir/fixture-song_p2/line_times.json"],"removed":[],"modified":["CLAUDE.md","apps/web/e2e/acceptance.spec.ts","docs/governance-experience.md","reports/baseline.json","reports/contract-consumers.latest.json","reports/docs-truth.latest.json","reports/dual-backend-parity.latest.json","reports/governance-docs.latest.json","reports/governance.latest.json","reports/migrations.latest.json","reports/model-assets.latest.json","reports/naming.latest.json","reports/order-concurrency-guard.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/ui-acceptance.latest.json","reports/validation-source.latest.json","scripts/check-ui-acceptance.mjs"]}],"total_commits":0,"head_commit":{"id":"03d95db096af66a1e7af7708a99156f194f2c702","message":"Merge branch 'governance/consolidate-20260902'(整合治理分支 f77fe27 + C29 手工合入 + C31–C36/G21/G30 关闭)\n\nCo-Authored-By: Claude Fable 5.1 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/songformer-structure-lyrics/commit/03d95db096af66a1e7af7708a99156f194f2c702","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-02T16:39:01-07:00","added":[".agents/skills/business-module-intake/SKILL.md","apps/web/e2e/fixtures/review-workdir/audio-probe-song/alignment.json","apps/web/e2e/fixtures/review-workdir/audio-probe-song/lyrics.txt","apps/web/e2e/fixtures/review-workdir/audio-probe-song/run_inputs.json","apps/web/e2e/fixtures/review-workdir/audio-probe-song/segments/vocal_1.wav","apps/web/e2e/fixtures/review-workdir/audio-probe-song/segments/vocal_2.wav","apps/web/e2e/fixtures/review-workdir/audio-probe-song/status.json","apps/web/e2e/fixtures/review-workdir/audio-probe-song/vocals.wav","apps/web/e2e/fixtures/review-workdir/audio-probe-song_p2/line_times.json","apps/web/e2e/fixtures/review-workdir/fixture-song/alignment.json","apps/web/e2e/fixtures/review-workdir/fixture-song_p2/line_times.json","apps/web/e2e/fixtures/review-workdir/nonaudio-source-probe/run_inputs.json","apps/web/src/app/api/review/edits/route.ts","apps/web/src/app/api/review/full-audio/route.ts","apps/web/src/lib/audio-range.test.ts","apps/web/src/lib/audio-range.ts","apps/web/src/lib/audio-source.ts","apps/web/src/lib/export-format.test.ts","apps/web/src/lib/export-format.ts","apps/web/src/lib/manual-edits.ts","apps/web/src/lib/review-artifacts.test.ts","apps/web/src/lib/review-artifacts.ts","apps/web/src/lib/structure-mode.ts","apps/web/vitest.config.ts","config/structure-modes.v1.json","docs/domain/review-manual-timing-blueprint.md","reports/export-contract.freeze.json","reports/export-contract.latest.json","scripts/check-export-contract.mjs","scripts/download-model-assets.mjs","scripts/lib/agent-adapters.mjs","scripts/lib/provenance.mjs","scripts/normalize-model-manifest.mjs","scripts/setup-model-workers.mjs","scripts/sync-agent-skills.mjs","services/structure_lyrics/phase1/vocal_structure.py","services/structure_lyrics/tests/test_cli_declared.py","services/structure_lyrics/tests/test_ffmpeg_resolution.py","services/structure_lyrics/tests/test_vocal_structure.py","workers/demucs/README.md","复核工作台.dc.html"],"removed":["apps/web/pnpm-lock.yaml"],"modified":[".agents/skills/frontend-api-react/SKILL.md",".agents/skills/frontend-view-react/SKILL.md",".agents/skills/frontend-view-react/references/view-templates.md",".agents/skills/fullstack-7layer-react/SKILL.md",".agents/skills/zustand-store/SKILL.md",".claude/agents/acceptance-runner.md",".claude/launch.json",".claude/skills/business-module-intake/SKILL.md",".claude/skills/frontend-api-react/SKILL.md",".claude/skills/frontend-view-react/SKILL.md",".claude/skills/frontend-view-react/references/view-templates.md",".claude/skills/fullstack-7layer-react/SKILL.md",".claude/skills/zustand-store/SKILL.md",".github/pull_request_template.md",".gitignore","CLAUDE.md","README.md","apps/web/e2e/acceptance.spec.ts","apps/web/package.json","apps/web/playwright.config.ts","apps/web/src/app/api/review/audio/route.ts","apps/web/src/app/api/review/browse/route.ts","apps/web/src/app/api/review/export/route.ts","apps/web/src/app/api/review/route.ts","apps/web/src/app/api/review/run/route.ts","apps/web/src/app/layout.tsx","apps/web/src/app/review/page.tsx","apps/web/src/lib/song-name.ts","apps/web/tailwind.config.ts","apps/web/tsconfig.json","docs/README.md","docs/adr/0001-use-typescript-fullstack.md","docs/adr/0005-use-prisma.md","docs/adr/0008-monorepo-pnpm-turborepo.md","docs/adr/README.md","docs/domain-glossary.md","docs/domain/owner-matrix.md","docs/domain/structure-lyrics-phase1-blueprint.md","docs/governance-experience.md","docs/migration-notes.md","docs/standards/api-standard.md","docs/standards/database-standard.md","docs/standards/frontend-standard.md","docs/standards/git-standard.md","docs/standards/naming-standard.md","docs/standards/review-standard.md","models/model-assets.v1.json","package.json","packages/contracts/package.json","pnpm-lock.yaml","reports/baseline.json","reports/contract-consumers.latest.json","reports/docs-truth.latest.json","reports/dual-backend-parity.latest.json","reports/governance-docs.latest.json","reports/governance.latest.json","reports/migrations.latest.json","reports/model-assets.latest.json","reports/model-evidence/htdemucs-smoke.latest.json","reports/model-evidence/mms-fa-smoke.latest.json","reports/model-evidence/qwen3-asr-smoke.latest.json","reports/model-evidence/structure-smoke.latest.json","reports/naming.latest.json","reports/order-concurrency-guard.latest.json","reports/pipeline-tests.latest.json","reports/runtime-acceptance.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/ui-acceptance.latest.json","reports/validation-source.latest.json","scripts/check-contract-consumers.mjs","scripts/check-docs-truth.mjs","scripts/check-dual-backend-parity.mjs","scripts/check-governance-docs.mjs","scripts/check-migrations.mjs","scripts/check-model-assets.mjs","scripts/check-naming.mjs","scripts/check-order-concurrency-guard.mjs","scripts/check-pipeline-tests.mjs","scripts/check-runtime-acceptance.mjs","scripts/check-schema-sync.mjs","scripts/check-ui-acceptance.mjs","scripts/check-validation-source.mjs","scripts/governance-report.mjs","services/structure_lyrics/README.md","services/structure_lyrics/phase1/asr.py","services/structure_lyrics/phase1/audio.py","services/structure_lyrics/phase1/cli.py","services/structure_lyrics/phase2/pipeline.py","services/structure_lyrics/phase2/refine.py","services/structure_lyrics/requirements.txt","services/structure_lyrics/run_song.py","services/structure_lyrics/tests/test_language.py","services/structure_lyrics/tests/test_phase2.py","services/structure_lyrics/tests/test_tokenize.py","workers/demucs/requirements_demucs.txt","workers/demucs/run_separate.py","workers/mms-fa/run_mms_fa.py","workers/structure/README.md","workers/structure/run_structure.py"]},"repository":{"id":67,"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":"songformer-structure-lyrics","full_name":"luoanwu/songformer-structure-lyrics","description":"SongFormer 结构时间歌词行:结构→歌词行→字级时间流水线 + 治理底座","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":2585,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/songformer-structure-lyrics/languages","html_url":"https://gitea.g-hi.com/luoanwu/songformer-structure-lyrics","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/songformer-structure-lyrics","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/songformer-structure-lyrics.git","clone_url":"https://gitea.g-hi.com/luoanwu/songformer-structure-lyrics.git","original_url":"","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":4,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-07-28T14:19:19+08:00","updated_at":"2026-09-03T07:39: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
|
3
|
5
|
1788392344
|
1788392386
|
0
|
1788392344
|
1788392386
|
group: governance-${{ github.workflow }}-${{ githu group: governance-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: "true"
...
|
governance-governance.yml-refs/heads/main
|
1
|
Edit
Delete
|
|
14174
|
chore: add backend .env configuration
|
6
|
5
|
ci.yml
|
14096
|
5
|
0
|
refs/heads/main
|
204e3356f50776130b4976cf96f4deedfe36ab5f
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"7c66dac1fd83d4b9dc05198d7589827309ba5922","after":"204e3356f50776130b4976cf96f4deedfe36ab5f","compare_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/compare/7c66dac1fd83d4b9dc05198d7589827309ba5922...204e3356f50776130b4976cf96f4deedfe36ab5f","commits":[{"id":"204e3356f50776130b4976cf96f4deedfe36ab5f","message":"chore: add backend .env configuration\n\nCo-authored-by: Qwen-Coder \u003cqwen-coder@alibabacloud.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/204e3356f50776130b4976cf96f4deedfe36ab5f","author":{"name":"jh.sj","email":"jh.sj@jhsjdeMac-Studio.local","username":""},"committer":{"name":"jh.sj","email":"jh.sj@jhsjdeMac-Studio.local","username":""},"verification":null,"timestamp":"2026-04-14T20:34:24+08:00","added":["backend/.env"],"removed":[],"modified":[]}],"total_commits":0,"head_commit":{"id":"204e3356f50776130b4976cf96f4deedfe36ab5f","message":"chore: add backend .env configuration\n\nCo-authored-by: Qwen-Coder \u003cqwen-coder@alibabacloud.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/204e3356f50776130b4976cf96f4deedfe36ab5f","author":{"name":"jh.sj","email":"jh.sj@jhsjdeMac-Studio.local","username":""},"committer":{"name":"jh.sj","email":"jh.sj@jhsjdeMac-Studio.local","username":""},"verification":null,"timestamp":"2026-04-14T20:34:24+08:00","added":["backend/.env"],"removed":[],"modified":[]},"repository":{"id":6,"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":"juhi-omni-knowledge-hub","full_name":"luoanwu/juhi-omni-knowledge-hub","description":"巨嗨全域智库 - B2B RevOps 全生命周期平台","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":5215579,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub/languages","html_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/juhi-omni-knowledge-hub.git","clone_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub.git","original_url":"https://github.com/laoluojuhai/juhi-omni-knowledge-hub.git","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":4,"open_issues_count":0,"open_pr_counter":1,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-02-23T23:57:52+08:00","updated_at":"2026-04-14T20:34: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":false,"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
|
6
|
0
|
1776170150
|
0
|
1776170076
|
1776170151
|
group: ci-${{ github.ref }}
cancel-in-progress: group: ci-${{ github.ref }}
cancel-in-progress: "true"
...
|
ci-refs/heads/main
|
1
|
Edit
Delete
|
|
17730
|
Stop tracking backend/.env (leaked secrets remedia Stop tracking backend/.env (leaked secrets remediation, step 1)...
|
6
|
5
|
ci.yml
|
17651
|
5
|
0
|
refs/heads/main
|
f8c99c0bccfc306a4dcc9afd03e1247a4ebd4a97
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"597fbdc49bc67e7803e9ff0ab9c77dccc99d778e","after":"f8c99c0bccfc306a4dcc9afd03e1247a4ebd4a97","compare_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/compare/597fbdc49bc67e7803e9ff0ab9c77dccc99d778e...f8c99c0bccfc306a4dcc9afd03e1247a4ebd4a97","commits":[{"id":"f8c99c0bccfc306a4dcc9afd03e1247a4ebd4a97","message":"Stop tracking backend/.env (leaked secrets remediation, step 1)\n\nbackend/.env was committed once at 204e3356f with what appear to be\nreal base64-encoded random secrets (DB password, Redis password, JWT\nsecret, MinIO secret key — pattern matches `openssl rand -base64 32`\noutput). The file header indicates it was auto-generated locally by\nscripts/sync-local-env.sh and committed by mistake.\n\nThis commit only stops tracking the file going forward. The leaked\ncontent is still reachable in git history at commit 204e3356f from\nmain and from ~10+ origin feature branches; treat the secrets as\ncompromised and rotate them in any deployment that may have used them.\n\nRoot .gitignore already has a `.env` rule that takes effect once the\nfile is no longer tracked, so no .gitignore change is needed.\n\nTo regenerate backend/.env locally with the new dev defaults:\n bash scripts/sync-local-env.sh --force\n\nCo-Authored-By: Claude Opus 4.7 (1M context) \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/f8c99c0bccfc306a4dcc9afd03e1247a4ebd4a97","author":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-04-26T08:52:06-07:00","added":[],"removed":["backend/.env"],"modified":[]}],"total_commits":0,"head_commit":{"id":"f8c99c0bccfc306a4dcc9afd03e1247a4ebd4a97","message":"Stop tracking backend/.env (leaked secrets remediation, step 1)\n\nbackend/.env was committed once at 204e3356f with what appear to be\nreal base64-encoded random secrets (DB password, Redis password, JWT\nsecret, MinIO secret key — pattern matches `openssl rand -base64 32`\noutput). The file header indicates it was auto-generated locally by\nscripts/sync-local-env.sh and committed by mistake.\n\nThis commit only stops tracking the file going forward. The leaked\ncontent is still reachable in git history at commit 204e3356f from\nmain and from ~10+ origin feature branches; treat the secrets as\ncompromised and rotate them in any deployment that may have used them.\n\nRoot .gitignore already has a `.env` rule that takes effect once the\nfile is no longer tracked, so no .gitignore change is needed.\n\nTo regenerate backend/.env locally with the new dev defaults:\n bash scripts/sync-local-env.sh --force\n\nCo-Authored-By: Claude Opus 4.7 (1M context) \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/f8c99c0bccfc306a4dcc9afd03e1247a4ebd4a97","author":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-04-26T08:52:06-07:00","added":[],"removed":["backend/.env"],"modified":[]},"repository":{"id":6,"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":"juhi-omni-knowledge-hub","full_name":"luoanwu/juhi-omni-knowledge-hub","description":"巨嗨全域智库 - B2B RevOps 全生命周期平台","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":5218081,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub/languages","html_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/juhi-omni-knowledge-hub.git","clone_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub.git","original_url":"https://github.com/laoluojuhai/juhi-omni-knowledge-hub.git","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":14,"open_issues_count":0,"open_pr_counter":1,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-02-23T23:57:52+08:00","updated_at":"2026-04-26T23:45:24+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":false,"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
|
6
|
0
|
1777219007
|
0
|
1777218738
|
1777219007
|
group: ci-${{ github.ref }}
cancel-in-progress: group: ci-${{ github.ref }}
cancel-in-progress: "true"
...
|
ci-refs/heads/main
|
1
|
Edit
Delete
|
|
17735
|
Add env-leak pre-commit guard and secrets-leak inc Add env-leak pre-commit guard and secrets-leak incident doc...
|
6
|
5
|
ci.yml
|
17656
|
5
|
0
|
refs/heads/main
|
bd8162cf2c08d175a1cab0f69d42b648bb825c10
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"f8c99c0bccfc306a4dcc9afd03e1247a4ebd4a97","after":"bd8162cf2c08d175a1cab0f69d42b648bb825c10","compare_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/compare/f8c99c0bccfc306a4dcc9afd03e1247a4ebd4a97...bd8162cf2c08d175a1cab0f69d42b648bb825c10","commits":[{"id":"bd8162cf2c08d175a1cab0f69d42b648bb825c10","message":"Add env-leak pre-commit guard and secrets-leak incident doc\n\n- .husky/pre-commit: insert a serial first-position check that blocks\n any staged file ending in `.env` or `.env.local` from entering the\n index. Templates (`.env.example`, `.env.test`, `frontend/.env.development`,\n etc.) are not matched. Background and the previous incident are\n documented in docs/security/leaked-env-2026-04-26.md.\n\n- docs/security/leaked-env-2026-04-26.md: full incident record covering\n what leaked, what was done in 597fbdc49 and f8c99c0bc, what each team\n member needs to do locally, the rotation checklist for the four leaked\n secrets, and the conditions under which a history rewrite would be\n warranted (currently not).\n\nCo-Authored-By: Claude Opus 4.7 (1M context) \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/bd8162cf2c08d175a1cab0f69d42b648bb825c10","author":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-04-26T08:56:37-07:00","added":["docs/security/leaked-env-2026-04-26.md"],"removed":[],"modified":[".husky/pre-commit"]}],"total_commits":0,"head_commit":{"id":"bd8162cf2c08d175a1cab0f69d42b648bb825c10","message":"Add env-leak pre-commit guard and secrets-leak incident doc\n\n- .husky/pre-commit: insert a serial first-position check that blocks\n any staged file ending in `.env` or `.env.local` from entering the\n index. Templates (`.env.example`, `.env.test`, `frontend/.env.development`,\n etc.) are not matched. Background and the previous incident are\n documented in docs/security/leaked-env-2026-04-26.md.\n\n- docs/security/leaked-env-2026-04-26.md: full incident record covering\n what leaked, what was done in 597fbdc49 and f8c99c0bc, what each team\n member needs to do locally, the rotation checklist for the four leaked\n secrets, and the conditions under which a history rewrite would be\n warranted (currently not).\n\nCo-Authored-By: Claude Opus 4.7 (1M context) \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/bd8162cf2c08d175a1cab0f69d42b648bb825c10","author":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-04-26T08:56:37-07:00","added":["docs/security/leaked-env-2026-04-26.md"],"removed":[],"modified":[".husky/pre-commit"]},"repository":{"id":6,"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":"juhi-omni-knowledge-hub","full_name":"luoanwu/juhi-omni-knowledge-hub","description":"巨嗨全域智库 - B2B RevOps 全生命周期平台","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":5218086,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub/languages","html_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/juhi-omni-knowledge-hub.git","clone_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub.git","original_url":"https://github.com/laoluojuhai/juhi-omni-knowledge-hub.git","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":14,"open_issues_count":0,"open_pr_counter":1,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-02-23T23:57:52+08:00","updated_at":"2026-04-26T23:52:27+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":false,"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
|
6
|
0
|
1777219584
|
0
|
1777219008
|
1777219585
|
group: ci-${{ github.ref }}
cancel-in-progress: group: ci-${{ github.ref }}
cancel-in-progress: "true"
...
|
ci-refs/heads/main
|
1
|
Edit
Delete
|
|
17741
|
Add secret-content-scan to Fast Gate pre-commit
|
6
|
5
|
ci.yml
|
17662
|
5
|
0
|
refs/heads/main
|
6f30ee7954e6142227f44fbcb36106e5ce6018eb
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"bd8162cf2c08d175a1cab0f69d42b648bb825c10","after":"6f30ee7954e6142227f44fbcb36106e5ce6018eb","compare_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/compare/bd8162cf2c08d175a1cab0f69d42b648bb825c10...6f30ee7954e6142227f44fbcb36106e5ce6018eb","commits":[{"id":"6f30ee7954e6142227f44fbcb36106e5ce6018eb","message":"Add secret-content-scan to Fast Gate pre-commit\n\nLayer-2 defense complementing the env-leak guard added in bd8162cf2:\n\n- Scans staged diff lines for high-precision secret patterns:\n PEM private-key blocks, AWS access keys (AKIA…), GitHub PATs\n (ghp_/gho_/ghs_), JWT tokens (eyJ…eyJ…), and assignment lines\n matching `*PASSWORD|SECRET|TOKEN|API_KEY = \u003c32+ char base64\u003e`.\n- Excludes hook itself, docs/security/**, test fixtures, and the\n generate-secrets script to avoid self-tripping.\n- Per-line bypass via trailing `noqa: secret-scan` comment for\n legitimate fixtures or doc samples.\n\nVerified all positive cases trip and all negative cases pass through\nwhen run with system /usr/bin/grep (the shell sh hooks use). Failing\nthe gate prints up to 10 offending lines to give the developer\ncontext without dumping the whole secret.\n\nCo-Authored-By: Claude Opus 4.7 (1M context) \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/6f30ee7954e6142227f44fbcb36106e5ce6018eb","author":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-04-26T09:06:13-07:00","added":[],"removed":[],"modified":[".husky/pre-commit"]}],"total_commits":0,"head_commit":{"id":"6f30ee7954e6142227f44fbcb36106e5ce6018eb","message":"Add secret-content-scan to Fast Gate pre-commit\n\nLayer-2 defense complementing the env-leak guard added in bd8162cf2:\n\n- Scans staged diff lines for high-precision secret patterns:\n PEM private-key blocks, AWS access keys (AKIA…), GitHub PATs\n (ghp_/gho_/ghs_), JWT tokens (eyJ…eyJ…), and assignment lines\n matching `*PASSWORD|SECRET|TOKEN|API_KEY = \u003c32+ char base64\u003e`.\n- Excludes hook itself, docs/security/**, test fixtures, and the\n generate-secrets script to avoid self-tripping.\n- Per-line bypass via trailing `noqa: secret-scan` comment for\n legitimate fixtures or doc samples.\n\nVerified all positive cases trip and all negative cases pass through\nwhen run with system /usr/bin/grep (the shell sh hooks use). Failing\nthe gate prints up to 10 offending lines to give the developer\ncontext without dumping the whole secret.\n\nCo-Authored-By: Claude Opus 4.7 (1M context) \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/6f30ee7954e6142227f44fbcb36106e5ce6018eb","author":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-04-26T09:06:13-07:00","added":[],"removed":[],"modified":[".husky/pre-commit"]},"repository":{"id":6,"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":"juhi-omni-knowledge-hub","full_name":"luoanwu/juhi-omni-knowledge-hub","description":"巨嗨全域智库 - B2B RevOps 全生命周期平台","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":5218097,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub/languages","html_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/juhi-omni-knowledge-hub.git","clone_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub.git","original_url":"https://github.com/laoluojuhai/juhi-omni-knowledge-hub.git","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":14,"open_issues_count":0,"open_pr_counter":1,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-02-23T23:57:52+08:00","updated_at":"2026-04-26T23:56:59+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":false,"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
|
6
|
0
|
1777219989
|
0
|
1777219585
|
1777219990
|
group: ci-${{ github.ref }}
cancel-in-progress: group: ci-${{ github.ref }}
cancel-in-progress: "true"
...
|
ci-refs/heads/main
|
1
|
Edit
Delete
|
|
17746
|
Unblock docker-compose.prod.yml validation by remo Unblock docker-compose.prod.yml validation by removing replicas:2...
|
6
|
5
|
ci.yml
|
17667
|
5
|
0
|
refs/heads/main
|
c04c1f61a7ca64acf31ed914678656d87ed6e35f
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"6f30ee7954e6142227f44fbcb36106e5ce6018eb","after":"c04c1f61a7ca64acf31ed914678656d87ed6e35f","compare_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/compare/6f30ee7954e6142227f44fbcb36106e5ce6018eb...c04c1f61a7ca64acf31ed914678656d87ed6e35f","commits":[{"id":"c04c1f61a7ca64acf31ed914678656d87ed6e35f","message":"Unblock docker-compose.prod.yml validation by removing replicas:2\n\n`docker compose -f docker-compose.prod.yml config` was failing with:\n\n services.deploy.replicas: can't set container_name and api as\n container name must be unique: invalid compose project\n\nThe api service had both `container_name: juhi-api` (relied on by\nscripts/deploy.sh:294 and scripts/post-deploy-verify.sh:39) and\n`deploy.replicas: 2`. Compose v2 rejects this combination because\nit can't give two replicas the same fixed name.\n\n`deploy.replicas` is also silently ignored in non-Swarm Compose mode,\nso this directive was aspirational rather than effective. The actual\nmulti-replica path in this repo is docker-compose.ha.yml.\n\nRemoved the `replicas: 2` line and added a comment explaining the\ntrade-off; kept resources/update_config/rollback_config for Swarm/K8s\ntranslation.\n\nVerified: `docker compose --env-file \u003cstub\u003e -f docker-compose.prod.yml\nconfig` now exits 0 with no warnings.\n\nCo-Authored-By: Claude Opus 4.7 (1M context) \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/c04c1f61a7ca64acf31ed914678656d87ed6e35f","author":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-04-26T09:13:05-07:00","added":[],"removed":[],"modified":["docker-compose.prod.yml"]}],"total_commits":0,"head_commit":{"id":"c04c1f61a7ca64acf31ed914678656d87ed6e35f","message":"Unblock docker-compose.prod.yml validation by removing replicas:2\n\n`docker compose -f docker-compose.prod.yml config` was failing with:\n\n services.deploy.replicas: can't set container_name and api as\n container name must be unique: invalid compose project\n\nThe api service had both `container_name: juhi-api` (relied on by\nscripts/deploy.sh:294 and scripts/post-deploy-verify.sh:39) and\n`deploy.replicas: 2`. Compose v2 rejects this combination because\nit can't give two replicas the same fixed name.\n\n`deploy.replicas` is also silently ignored in non-Swarm Compose mode,\nso this directive was aspirational rather than effective. The actual\nmulti-replica path in this repo is docker-compose.ha.yml.\n\nRemoved the `replicas: 2` line and added a comment explaining the\ntrade-off; kept resources/update_config/rollback_config for Swarm/K8s\ntranslation.\n\nVerified: `docker compose --env-file \u003cstub\u003e -f docker-compose.prod.yml\nconfig` now exits 0 with no warnings.\n\nCo-Authored-By: Claude Opus 4.7 (1M context) \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/c04c1f61a7ca64acf31ed914678656d87ed6e35f","author":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-04-26T09:13:05-07:00","added":[],"removed":[],"modified":["docker-compose.prod.yml"]},"repository":{"id":6,"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":"juhi-omni-knowledge-hub","full_name":"luoanwu/juhi-omni-knowledge-hub","description":"巨嗨全域智库 - B2B RevOps 全生命周期平台","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":5218106,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub/languages","html_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/juhi-omni-knowledge-hub.git","clone_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub.git","original_url":"https://github.com/laoluojuhai/juhi-omni-knowledge-hub.git","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":14,"open_issues_count":0,"open_pr_counter":1,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-02-23T23:57:52+08:00","updated_at":"2026-04-27T00:06:37+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":false,"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
|
6
|
0
|
1777220519
|
0
|
1777219990
|
1777220519
|
group: ci-${{ github.ref }}
cancel-in-progress: group: ci-${{ github.ref }}
cancel-in-progress: "true"
...
|
ci-refs/heads/main
|
1
|
Edit
Delete
|
|
17752
|
Tighten CI workflows: Node 20, pnpm 9, lint enforc Tighten CI workflows: Node 20, pnpm 9, lint enforcement, audit gaps...
|
6
|
5
|
ci.yml
|
17673
|
5
|
0
|
refs/heads/main
|
a67a4f5bf6bede6341ed368fb3af3caec8dcd71c
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"c04c1f61a7ca64acf31ed914678656d87ed6e35f","after":"a67a4f5bf6bede6341ed368fb3af3caec8dcd71c","compare_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/compare/c04c1f61a7ca64acf31ed914678656d87ed6e35f...a67a4f5bf6bede6341ed368fb3af3caec8dcd71c","commits":[{"id":"a67a4f5bf6bede6341ed368fb3af3caec8dcd71c","message":"Tighten CI workflows: Node 20, pnpm 9, lint enforcement, audit gaps\n\nAddresses the gaps surfaced in the CI/CD audit. Each change is minimal\nand validated by yamllint locally:\n\n- ci.yml: drop `|| true` from `pnpm -C backend run lint` so lint\n failures actually block CI instead of silently passing.\n- deploy.yml: bump PNPM_VERSION 8→9 to match ci.yml. The mismatch\n could cause lockfile-format drift and surprise behavior depending\n on which runner picked up the job first.\n- e2e-tests.yml + performance.yml: bump NODE_VERSION 18→20 (Node 18\n is in maintenance / EOL prep), and bump PNPM_VERSION 8→9.\n- e2e-tests.yml: bump pnpm/action-setup@v2→@v4 (4 occurrences) to\n match other workflows.\n- migration-safety.yml: fix duplicate `env:` mapping at the\n \"Create PostgreSQL extensions\" step that yamllint flagged\n (key-duplicates). The first env block's DATABASE_URL was being\n silently dropped; merged both keys into a single env block.\n- e2e-tests.yml + migration-safety.yml: add a header comment\n explaining that the literal `test_password` is a runner-local\n ephemeral PostgreSQL service-container convention, not a real\n secret. Replacing it with secrets.* would break fork-PR CI.\n- test-pipeline.yml: add a new `fullstack-alignment-audit` job\n running the four audits that were previously missing from CI:\n audit:route-contract, audit:field-payload, audit:enum-consistency,\n audit:formrules-zod. Reports uploaded as artifact.\n\nAll six edited files pass yamllint.\n\nNote: `.gitea/workflows/` does not exist — Gitea side runs no CI.\nThat's a separate decision (mirror the GitHub workflows there, or\ndeliberately keep CI on GitHub only) and is out of scope here.\n\nCo-Authored-By: Claude Opus 4.7 (1M context) \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/a67a4f5bf6bede6341ed368fb3af3caec8dcd71c","author":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-04-26T09:21:54-07:00","added":[],"removed":[],"modified":[".github/workflows/ci.yml",".github/workflows/deploy.yml",".github/workflows/e2e-tests.yml",".github/workflows/migration-safety.yml",".github/workflows/performance.yml",".github/workflows/test-pipeline.yml"]}],"total_commits":0,"head_commit":{"id":"a67a4f5bf6bede6341ed368fb3af3caec8dcd71c","message":"Tighten CI workflows: Node 20, pnpm 9, lint enforcement, audit gaps\n\nAddresses the gaps surfaced in the CI/CD audit. Each change is minimal\nand validated by yamllint locally:\n\n- ci.yml: drop `|| true` from `pnpm -C backend run lint` so lint\n failures actually block CI instead of silently passing.\n- deploy.yml: bump PNPM_VERSION 8→9 to match ci.yml. The mismatch\n could cause lockfile-format drift and surprise behavior depending\n on which runner picked up the job first.\n- e2e-tests.yml + performance.yml: bump NODE_VERSION 18→20 (Node 18\n is in maintenance / EOL prep), and bump PNPM_VERSION 8→9.\n- e2e-tests.yml: bump pnpm/action-setup@v2→@v4 (4 occurrences) to\n match other workflows.\n- migration-safety.yml: fix duplicate `env:` mapping at the\n \"Create PostgreSQL extensions\" step that yamllint flagged\n (key-duplicates). The first env block's DATABASE_URL was being\n silently dropped; merged both keys into a single env block.\n- e2e-tests.yml + migration-safety.yml: add a header comment\n explaining that the literal `test_password` is a runner-local\n ephemeral PostgreSQL service-container convention, not a real\n secret. Replacing it with secrets.* would break fork-PR CI.\n- test-pipeline.yml: add a new `fullstack-alignment-audit` job\n running the four audits that were previously missing from CI:\n audit:route-contract, audit:field-payload, audit:enum-consistency,\n audit:formrules-zod. Reports uploaded as artifact.\n\nAll six edited files pass yamllint.\n\nNote: `.gitea/workflows/` does not exist — Gitea side runs no CI.\nThat's a separate decision (mirror the GitHub workflows there, or\ndeliberately keep CI on GitHub only) and is out of scope here.\n\nCo-Authored-By: Claude Opus 4.7 (1M context) \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/a67a4f5bf6bede6341ed368fb3af3caec8dcd71c","author":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-04-26T09:21:54-07:00","added":[],"removed":[],"modified":[".github/workflows/ci.yml",".github/workflows/deploy.yml",".github/workflows/e2e-tests.yml",".github/workflows/migration-safety.yml",".github/workflows/performance.yml",".github/workflows/test-pipeline.yml"]},"repository":{"id":6,"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":"juhi-omni-knowledge-hub","full_name":"luoanwu/juhi-omni-knowledge-hub","description":"巨嗨全域智库 - B2B RevOps 全生命周期平台","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":5218117,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub/languages","html_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/juhi-omni-knowledge-hub.git","clone_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub.git","original_url":"https://github.com/laoluojuhai/juhi-omni-knowledge-hub.git","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":14,"open_issues_count":0,"open_pr_counter":1,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-02-23T23:57:52+08:00","updated_at":"2026-04-27T00:13:21+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":false,"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
|
6
|
0
|
1777221953
|
0
|
1777220520
|
1777221953
|
group: ci-${{ github.ref }}
cancel-in-progress: group: ci-${{ github.ref }}
cancel-in-progress: "true"
...
|
ci-refs/heads/main
|
1
|
Edit
Delete
|
|
23339
|
Merge remote-tracking branch 'origin/main' Merge remote-tracking branch 'origin/main' into claude/festive-nobel-6b66e8...
|
6
|
5
|
ci.yml
|
23257
|
5
|
0
|
refs/pull/5/head
|
97a07d5982fb0e82cdee59e6043fa80975bfbb2b
|
0
|
0
|
0
|
pull_request
|
{"action":"opened","number" {"action":"opened","number":5,"pull_request":{"id":13,"url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/pulls/5","number":5,"user":{"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"},"title":"feat: 培训管理种子 + MQL 评分规则 + Gitea CI 迁移","body":"对应 GitHub PR #52。\n\n- backend/prisma/seeds/22-hr-training-content.ts: 培训管理 12 张表种子\n- backend/prisma/seeds/23-lead-scoring-rules.ts: MQL 默认评分规则集(修复 /lead-qualification 评估 400)\n- .gitea/workflows/ci.yml: Gitea Actions CI(取代账户计费阻塞的 GitHub Actions)\n- frontend course-marketplace.ts: array-guard 修复\n- 已合并 origin/main 至 97a07d598,冲突全部解决\n\nGitHub Actions 已仓库级禁用,CI 迁移到本 Gitea PR 验证。","labels":[],"milestone":null,"assignee":null,"assignees":[],"requested_reviewers":[],"requested_reviewers_teams":[],"state":"open","draft":false,"is_locked":false,"comments":0,"additions":327226,"deletions":6430,"changed_files":697,"html_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/pulls/5","diff_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/pulls/5.diff","patch_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/pulls/5.patch","mergeable":true,"merged":false,"merged_at":null,"merge_commit_sha":null,"merged_by":null,"allow_maintainer_edit":false,"base":{"label":"main","ref":"main","sha":"534799e0b1707368df37aff7b3df545a6ca1064a","repo_id":6,"repo":{"id":6,"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":"juhi-omni-knowledge-hub","full_name":"luoanwu/juhi-omni-knowledge-hub","description":"巨嗨全域智库 - B2B RevOps 全生命周期平台","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":5425447,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub/languages","html_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/juhi-omni-knowledge-hub.git","clone_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub.git","original_url":"https://github.com/laoluojuhai/juhi-omni-knowledge-hub.git","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":5,"open_issues_count":0,"open_pr_counter":2,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-02-23T23:57:52+08:00","updated_at":"2026-05-16T01:35:18+08:00","archived_at":"1970-01-01T08:00:00+08:00","permissions":{"admin":false,"push":false,"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":false,"avatar_url":"","internal":false,"mirror_interval":"","object_format_name":"sha1","mirror_updated":"0001-01-01T00:00:00Z","topics":[],"licenses":[]}},"head":{"label":"claude/festive-nobel-6b66e8","ref":"claude/festive-nobel-6b66e8","sha":"97a07d5982fb0e82cdee59e6043fa80975bfbb2b","repo_id":6,"repo":{"id":6,"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":"juhi-omni-knowledge-hub","full_name":"luoanwu/juhi-omni-knowledge-hub","description":"巨嗨全域智库 - B2B RevOps 全生命周期平台","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":5425447,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub/languages","html_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/juhi-omni-knowledge-hub.git","clone_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub.git","original_url":"https://github.com/laoluojuhai/juhi-omni-knowledge-hub.git","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":5,"open_issues_count":0,"open_pr_counter":2,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-02-23T23:57:52+08:00","updated_at":"2026-05-16T01:35:18+08:00","archived_at":"1970-01-01T08:00:00+08:00","permissions":{"admin":false,"push":false,"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":false,"avatar_url":"","internal":false,"mirror_interval":"","object_format_name":"sha1","mirror_updated":"0001-01-01T00:00:00Z","topics":[],"licenses":[]}},"merge_base":"534799e0b1707368df37aff7b3df545a6ca1064a","due_date":null,"created_at":"2026-05-16T06:44:47+08:00","updated_at":"2026-05-16T06:44:48+08:00","closed_at":null,"pin_order":0},"requested_reviewer":null,"repository":{"id":6,"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":"juhi-omni-knowledge-hub","full_name":"luoanwu/juhi-omni-knowledge-hub","description":"巨嗨全域智库 - B2B RevOps 全生命周期平台","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":5425447,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub/languages","html_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/juhi-omni-knowledge-hub.git","clone_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub.git","original_url":"https://github.com/laoluojuhai/juhi-omni-knowledge-hub.git","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":5,"open_issues_count":0,"open_pr_counter":2,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-02-23T23:57:52+08:00","updated_at":"2026-05-16T01:35:18+08:00","archived_at":"1970-01-01T08:00:00+08:00","permissions":{"admin":true,"push":true,"pull":true},"has_code":true,"has_issues":true,"internal_tracker":{"enable_time_tracker":true,"allow_only_contributors_to_track_time":true,"enable_issue_dependencies":true},"has_wiki":true,"has_pull_requests":true,"has_projects":true,"projects_mode":"all","has_releases":true,"has_packages":true,"has_actions":true,"ignore_whitespace_conflicts":false,"allow_merge_commits":true,"allow_rebase":true,"allow_rebase_explicit":true,"allow_squash_merge":true,"allow_fast_forward_only_merge":true,"allow_rebase_update":true,"allow_manual_merge":false,"autodetect_manual_merge":false,"default_delete_branch_after_merge":false,"default_merge_style":"merge","default_allow_maintainer_edit":false,"avatar_url":"","internal":false,"mirror_interval":"","object_format_name":"sha1","mirror_updated":"0001-01-01T00:00:00Z","topics":[],"licenses":[]},"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"},"commit_id":"","review":null}...
|
pull_request
|
3
|
6
|
1778885091
|
1778885717
|
0
|
1778885090
|
1778885718
|
group: gitea-ci-${{ github.ref }}
cancel-in-progre group: gitea-ci-${{ github.ref }}
cancel-in-progress: "true"
...
|
gitea-ci-refs/pull/5/head
|
1
|
Edit
Delete
|
|
23410
|
初始提交:嗨赞AI制作平台(含 C1–C59 全部治理轮次)
|
60
|
5
|
governance.yml
|
1
|
5
|
0
|
refs/heads/main
|
f73daf0a17c4cd19344f03ba21afcc326a49a650
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"0000000000000000000000000000000000000000","after":"f73daf0a17c4cd19344f03ba21afcc326a49a650","compare_url":"https://gitea.g-hi.com/","commits":[{"id":"f73daf0a17c4cd19344f03ba21afcc326a49a650","message":"初始提交:嗨赞AI制作平台(含 C1–C59 全部治理轮次)\n\n从 基础框架 派生的 AI 歌词对齐制作平台。契约单源 @repo/contracts + 双后端\n(NestJS/Fastify)对等 + Next.js studio 前端 + Python 模型 workers。\n\n治理基线(reports/baseline.json 棘轮):\n- 静态门禁 pnpm check 全绿(naming/schema/validation/contract-consumers/\n dual-backend/concurrency-guard/migrations/models/alignment-models/library/\n lyra-parity/governance-docs)\n- check:runtime 316/316、check:ui 32/32、own-tests 39 文件 348 用例\n\n体积纪律:模型权重(~13GB)与曲库音频(含受版权保护素材)不入库,\n仅保留 models/model-assets.v1.json 与 曲库/library.latest.json 两份登记真源\n(check:models / check:library 据此比对磁盘实况)。\n\nCo-Authored-By: Claude Fable 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/haizan-ai-production-platform/commit/f73daf0a17c4cd19344f03ba21afcc326a49a650","author":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"verification":null,"timestamp":"2026-07-13T20:23:16-07:00","added":[".claude/agents/acceptance-runner.md",".claude/agents/module-blueprint.md",".claude/launch.json",".claude/skills/business-module-intake/SKILL.md",".claude/skills/frontend-api-react/SKILL.md",".claude/skills/frontend-view-react/SKILL.md",".claude/skills/frontend-view-react/references/view-templates.md",".claude/skills/fullstack-7layer-react/SKILL.md",".claude/skills/fullstack-7layer-react/references/fullstack-react-templates.md",".claude/skills/zustand-store/SKILL.md",".github/pull_request_template.md",".github/workflows/governance.yml",".gitignore","AGENTS.md","CLAUDE.md","README.md","apps/api-fastify/.env.example","apps/api-fastify/.gitignore","apps/api-fastify/package.json","apps/api-fastify/pnpm-lock.yaml","apps/api-fastify/prisma/migrations/20260608150500_init/migration.sql","apps/api-fastify/prisma/migrations/20260705080000_outbox_dead_letter/migration.sql","apps/api-fastify/prisma/migrations/20260709151138_alignment_domain/migration.sql","apps/api-fastify/prisma/migrations/migration_lock.toml","apps/api-fastify/prisma/schema.prisma","apps/api-fastify/src/app.ts","apps/api-fastify/src/lib/orderMachine.ts","apps/api-fastify/src/lib/statemachine.ts","apps/api-fastify/src/modules/alignment/alignment-coarse.ts","apps/api-fastify/src/modules/alignment/alignment-mms-fa.ts","apps/api-fastify/src/modules/alignment/alignment-pipeline.ts","apps/api-fastify/src/modules/alignment/alignment-scoring.ts","apps/api-fastify/src/modules/alignment/alignment-separation-htdemucs.ts","apps/api-fastify/src/modules/alignment/alignment-separation-larsnet.ts","apps/api-fastify/src/modules/alignment/alignment-separation.ts","apps/api-fastify/src/modules/alignment/alignment-structure.ts","apps/api-fastify/src/modules/alignment/alignment-verification.ts","apps/api-fastify/src/modules/alignment/alignment.service.ts","apps/api-fastify/src/modules/orders/orders.service.ts","apps/api-fastify/src/modules/song-assets/song-assets.service.ts","apps/api-fastify/src/modules/tenant.ts","apps/api-fastify/src/modules/users/users.service.ts","apps/api-fastify/src/plugins/events.ts","apps/api-fastify/src/plugins/outbox.ts","apps/api-fastify/src/plugins/prisma.ts","apps/api-fastify/src/plugins/queue.ts","apps/api-fastify/src/plugins/redis.ts","apps/api-fastify/src/plugins/storage.ts","apps/api-fastify/src/routes/alignment.ts","apps/api-fastify/src/routes/health.ts","apps/api-fastify/src/routes/jobs.ts","apps/api-fastify/src/routes/orders.ts","apps/api-fastify/src/routes/song-assets.ts","apps/api-fastify/src/routes/sse.ts","apps/api-fastify/src/routes/users.ts","apps/api-fastify/src/routes/ws.ts","apps/api-fastify/src/server.ts","apps/api-fastify/src/types.ts","apps/api-fastify/test/alignment.coarse.test.ts","apps/api-fastify/test/alignment.http.test.ts","apps/api-fastify/test/alignment.integration.test.ts","apps/api-fastify/test/alignment.mms-fa.test.ts","apps/api-fastify/test/alignment.pipeline.test.ts","apps/api-fastify/test/alignment.scoring.test.ts","apps/api-fastify/test/alignment.separation-htdemucs.test.ts","apps/api-fastify/test/alignment.separation-larsnet.test.ts","apps/api-fastify/test/alignment.separation.test.ts","apps/api-fastify/test/alignment.structure.test.ts","apps/api-fastify/test/alignment.verification.test.ts","apps/api-fastify/test/http.acceptance.test.ts","apps/api-fastify/test/orders.integration.test.ts","apps/api-fastify/test/outbox.deadletter.test.ts","apps/api-fastify/test/realtime.tenant.test.ts","apps/api-fastify/tsconfig.json","apps/api-fastify/vitest.config.ts","apps/api-nestjs/.env.example","apps/api-nestjs/.gitignore","apps/api-nestjs/docker-compose.yml","apps/api-nestjs/nest-cli.json","apps/api-nestjs/package.json","apps/api-nestjs/pnpm-lock.yaml","apps/api-nestjs/prisma/migrations/20260608150500_init/migration.sql","apps/api-nestjs/prisma/migrations/20260705080000_outbox_dead_letter/migration.sql","apps/api-nestjs/prisma/migrations/20260709151138_alignment_domain/migration.sql","apps/api-nestjs/prisma/migrations/migration_lock.toml","apps/api-nestjs/prisma/schema.prisma","apps/api-nestjs/prisma/seed.ts","apps/api-nestjs/src/alignment/alignment.controller.ts","apps/api-nestjs/src/alignment/alignment.module.ts","apps/api-nestjs/src/alignment/alignment.service.ts","apps/api-nestjs/src/alignment/song-assets.controller.ts","apps/api-nestjs/src/alignment/song-assets.service.ts","apps/api-nestjs/src/alignment/storage.provider.ts","apps/api-nestjs/src/app.module.ts","apps/api-nestjs/src/common/api-error-body.filter.ts","apps/api-nestjs/src/common/envelope.ts","apps/api-nestjs/src/common/tenant.decorator.ts","apps/api-nestjs/src/common/zod-validation.pipe.ts","apps/api-nestjs/src/create-app.ts","apps/api-nestjs/src/events/event-bus.service.ts","apps/api-nestjs/src/events/events.gateway.ts","apps/api-nestjs/src/events/events.module.ts","apps/api-nestjs/src/events/fanout.service.ts","apps/api-nestjs/src/events/outbox-dispatcher.service.ts","apps/api-nestjs/src/health/health.controller.ts","apps/api-nestjs/src/health/health.module.ts","apps/api-nestjs/src/main.ts","apps/api-nestjs/src/orders/orders.controller.ts","apps/api-nestjs/src/orders/orders.module.ts","apps/api-nestjs/src/orders/orders.service.ts","apps/api-nestjs/src/prisma/prisma.module.ts","apps/api-nestjs/src/prisma/prisma.service.ts","apps/api-nestjs/src/queue/jobs.controller.ts","apps/api-nestjs/src/queue/jobs.processor.ts","apps/api-nestjs/src/queue/queue.module.ts","apps/api-nestjs/src/queue/queue.types.ts","apps/api-nestjs/src/redis/redis.module.ts","apps/api-nestjs/src/sse/sse.controller.ts","apps/api-nestjs/src/sse/sse.module.ts","apps/api-nestjs/src/statemachine/index.ts","apps/api-nestjs/src/statemachine/order.machine.ts","apps/api-nestjs/src/statemachine/statemachine.engine.ts","apps/api-nestjs/src/statemachine/statemachine.types.ts","apps/api-nestjs/src/users/users.controller.ts","apps/api-nestjs/src/users/users.module.ts","apps/api-nestjs/src/users/users.service.ts","apps/api-nestjs/test/alignment.coarse.test.ts","apps/api-nestjs/test/alignment.http.test.ts","apps/api-nestjs/test/alignment.integration.test.ts","apps/api-nestjs/test/alignment.mms-fa.test.ts","apps/api-nestjs/test/alignment.pipeline.test.ts","apps/api-nestjs/test/alignment.scoring.test.ts","apps/api-nestjs/test/alignment.separation-htdemucs.test.ts","apps/api-nestjs/test/alignment.separation-larsnet.test.ts","apps/api-nestjs/test/alignment.separation.test.ts","apps/api-nestjs/test/alignment.structure.test.ts","apps/api-nestjs/test/alignment.verification.test.ts","apps/api-nestjs/test/http.acceptance.test.ts","apps/api-nestjs/test/orders.integration.test.ts","apps/api-nestjs/test/outbox.deadletter.test.ts","apps/api-nestjs/test/realtime.tenant.test.ts","apps/api-nestjs/tsconfig.build.json","apps/api-nestjs/tsconfig.json","apps/api-nestjs/vitest.config.ts","apps/web/.env.example","apps/web/.gitignore","apps/web/components.json","apps/web/e2e/acceptance.spec.ts","apps/web/e2e/baselines/lyra-prototype-v3-batch.png","apps/web/e2e/baselines/lyra-prototype-v3-delivery.png","apps/web/e2e/baselines/lyra-prototype-v3-info.png","apps/web/e2e/baselines/lyra-prototype-v3-workbench.png","apps/web/e2e/lyra-studio.spec.ts","apps/web/eslint.config.mjs","apps/web/next.config.ts","apps/web/package.json","apps/web/playwright.config.ts","apps/web/pnpm-lock.yaml","apps/web/postcss.config.js","apps/web/src/app/globals.css","apps/web/src/app/layout.tsx","apps/web/src/app/page.tsx","apps/web/src/app/studio/page.tsx","apps/web/src/components/EventFeed.tsx","apps/web/src/components/OrdersPanel.tsx","apps/web/src/components/RealtimeBar.tsx","apps/web/src/components/UsersPanel.tsx","apps/web/src/components/ui/badge.tsx","apps/web/src/components/ui/button.tsx","apps/web/src/components/ui/card.tsx","apps/web/src/components/ui/input.tsx","apps/web/src/components/ui/label.tsx","apps/web/src/components/ui/separator.tsx","apps/web/src/features/alignment/api.ts","apps/web/src/features/alignment/queries.ts","apps/web/src/features/lyra-studio/components/LyraStudio.tsx","apps/web/src/features/lyra-studio/components/PipelineBar.tsx","apps/web/src/features/lyra-studio/components/RunLoadErrorBanner.tsx","apps/web/src/features/lyra-studio/components/TopBar.tsx","apps/web/src/features/lyra-studio/components/canvas/PitchGridCanvas.tsx","apps/web/src/features/lyra-studio/components/canvas/VocalSpectrumCanvas.tsx","apps/web/src/features/lyra-studio/components/center/MvViewport.tsx","apps/web/src/features/lyra-studio/components/center/Transport.tsx","apps/web/src/features/lyra-studio/components/detail/RegionControlBar.tsx","apps/web/src/features/lyra-studio/components/lanes/LyricWorkspace.tsx","apps/web/src/features/lyra-studio/components/lanes/MainPlayhead.tsx","apps/web/src/features/lyra-studio/components/lanes/PhonemeLane.tsx","apps/web/src/features/lyra-studio/components/lanes/PitchLane.tsx","apps/web/src/features/lyra-studio/components/lanes/RefineLane.tsx","apps/web/src/features/lyra-studio/components/lanes/RegionLane.tsx","apps/web/src/features/lyra-studio/components/lanes/SentenceLane.tsx","apps/web/src/features/lyra-studio/components/lanes/VocalLane.tsx","apps/web/src/features/lyra-studio/components/left/AnalysisStub.tsx","apps/web/src/features/lyra-studio/components/left/LeftPanel.tsx","apps/web/src/features/lyra-studio/components/left/TrackCard.tsx","apps/web/src/features/lyra-studio/components/left/TrackMixer.tsx","apps/web/src/features/lyra-studio/components/modals/BatchModal.tsx","apps/web/src/features/lyra-studio/components/modals/CommitModal.tsx","apps/web/src/features/lyra-studio/components/modals/LoadModal.tsx","apps/web/src/features/lyra-studio/components/modals/ModalShell.tsx","apps/web/src/features/lyra-studio/components/modals/ResetModal.tsx","apps/web/src/features/lyra-studio/components/modals/StepModal.tsx","apps/web/src/features/lyra-studio/components/right/InfoTab.tsx","apps/web/src/features/lyra-studio/components/right/LyricsTab.tsx","apps/web/src/features/lyra-studio/components/right/PendingTab.tsx","apps/web/src/features/lyra-studio/components/right/RightPanel.tsx","apps/web/src/features/lyra-studio/components/right/RunEvidenceCard.tsx","apps/web/src/features/lyra-studio/components/timeline/GlobalTimeline.tsx","apps/web/src/features/lyra-studio/components/timeline/SeekWaveformCanvas.tsx","apps/web/src/features/lyra-studio/constants.ts","apps/web/src/features/lyra-studio/demoArtifacts.ts","apps/web/src/features/lyra-studio/fixtures/panels.ts","apps/web/src/features/lyra-studio/fixtures/segments.ts","apps/web/src/features/lyra-studio/fixtures/tracks.ts","apps/web/src/features/lyra-studio/hooks/useAudioPlayback.ts","apps/web/src/features/lyra-studio/hooks/useGlobalHotkeys.ts","apps/web/src/features/lyra-studio/hooks/useLaneDrags.ts","apps/web/src/features/lyra-studio/hooks/usePointerDrag.ts","apps/web/src/features/lyra-studio/hooks/useRafClock.ts","apps/web/src/features/lyra-studio/hooks/useScaleToFit.ts","apps/web/src/features/lyra-studio/hooks/useStudioBridge.ts","apps/web/src/features/lyra-studio/hooks/useWin.ts","apps/web/src/features/lyra-studio/prototypeV3.ts","apps/web/src/features/lyra-studio/runMapping.ts","apps/web/src/features/lyra-studio/store/selectors.ts","apps/web/src/features/lyra-studio/store/useStudioStore.ts","apps/web/src/features/lyra-studio/trackAudio.ts","apps/web/src/features/lyra-studio/types.ts","apps/web/src/features/lyra-studio/utils/realSpectrum.ts","apps/web/src/features/lyra-studio/utils/realWaveform.ts","apps/web/src/features/lyra-studio/utils/seededRandom.ts","apps/web/src/features/lyra-studio/utils/spectro.ts","apps/web/src/features/lyra-studio/utils/styles.ts","apps/web/src/features/lyra-studio/utils/time.ts","apps/web/src/hooks/useRealtime.ts","apps/web/src/lib/api.ts","apps/web/src/lib/providers.tsx","apps/web/src/lib/types.ts","apps/web/src/lib/utils.ts","apps/web/src/store/realtime.ts","apps/web/src/store/useAppStore.ts","apps/web/tailwind.config.ts","apps/web/tsconfig.json","design-qa.md","docker-compose.yml","docs/README.md","docs/adr/0001-use-typescript-fullstack.md","docs/adr/0002-use-nextjs-app-router.md","docs/adr/0003-use-nestjs-with-fastify-adapter.md","docs/adr/0004-use-postgresql.md","docs/adr/0005-use-prisma.md","docs/adr/0006-realtime-sse-and-websocket.md","docs/adr/0007-use-bullmq-queue.md","docs/adr/0008-monorepo-pnpm-turborepo.md","docs/adr/0009-dual-backend-governance-parity.md","docs/adr/README.md","docs/domain-glossary.md","docs/domain/lyric-alignment-production-blueprint.md","docs/domain/owner-matrix.md","docs/domain/stars-full-alignment-integration-assessment.md","docs/migration-notes.md","docs/prd/lyra-alignment-studio-prd.md","docs/prototypes/Lyra Alignment Studio (3)_副本.html","docs/prototypes/_lyra_extracted/0f3afcd6-3e42-43c6-bc2c-f7a7241d8cfc.js","docs/prototypes/_lyra_extracted/5e249108-9e25-49d4-aead-4a42da391445.txt","docs/prototypes/_lyra_extracted/6b20a626-d5f0-4ece-a2d4-3f3f7a96342e.txt","docs/prototypes/_lyra_extracted/78e3f258-31fe-4530-a312-1113810fd6c7.txt","docs/prototypes/_lyra_extracted/85a75d15-031b-454b-b8a4-728a88f2c03e.js","docs/prototypes/_lyra_extracted/8905ed0e-91a0-4b9e-8d49-fa1867515d0f.js","docs/prototypes/_lyra_extracted/app-dc-script.js","docs/prototypes/_lyra_extracted/e3ceeb25-f278-400d-8f89-200ca38d9d34.txt","docs/prototypes/_lyra_extracted/e456d310-3c72-4ccc-91a6-f34216a66722.txt","docs/prototypes/_lyra_extracted/e9425a8b-83ce-48d4-94d4-eb98f6c69c2b.txt","docs/prototypes/_lyra_extracted/template-body.html","docs/prototypes/_lyra_extracted/template-styles.css","docs/prototypes/_lyra_extracted/template.html","docs/prototypes/lyra-alignment-studio-elevation.md","docs/prototypes/lyra-alignment-studio-v2.html","docs/standards/api-standard.md","docs/standards/backend-standard.md","docs/standards/database-standard.md","docs/standards/frontend-standard.md","docs/standards/git-standard.md","docs/standards/naming-standard.md","docs/standards/review-standard.md","models/model-assets.v1.json","package.json","packages/config/eslint/base.mjs","packages/config/package.json","packages/config/prettier/index.json","packages/config/tsconfig/base.json","packages/config/tsconfig/nextjs.json","packages/config/tsconfig/node.json","packages/contracts/package.json","packages/contracts/src/alignment-export.ts","packages/contracts/src/alignment-models.test.ts","packages/contracts/src/alignment-models.ts","packages/contracts/src/alignment.test.ts","packages/contracts/src/alignment.ts","packages/contracts/src/contracts.test.ts","packages/contracts/src/index.ts","packages/contracts/src/order.ts","packages/contracts/src/realtime.ts","packages/contracts/src/statemachine.test.ts","packages/contracts/src/statemachine.ts","packages/contracts/src/tenant.ts","packages/contracts/src/user.ts","packages/contracts/src/vtc.ts","packages/contracts/tsconfig.json","packages/model-readiness/package.json","packages/model-readiness/src/index.ts","packages/model-readiness/src/readiness.test.ts","packages/model-readiness/tsconfig.json","packages/pipeline-runner/package.json","packages/pipeline-runner/src/index.ts","packages/pipeline-runner/src/runner.test.ts","packages/pipeline-runner/tsconfig.json","packages/storage/package.json","packages/storage/src/index.ts","packages/storage/src/storage.test.ts","packages/storage/tsconfig.json","pnpm-lock.yaml","pnpm-workspace.yaml","reports/alignment-integrity-qingtian.latest.json","reports/alignment-models.latest.json","reports/alignment-text-crosscheck-qingtian.latest.json","reports/baseline.json","reports/contract-consumers.latest.json","reports/design-audit/material-loading-2026-07-11/01-material-loading-current.png","reports/design-audit/material-loading-2026-07-11/02-material-loading-improved.png","reports/design-audit/material-loading-2026-07-11/03-material-loading-create.png","reports/design-audit/material-loading-2026-07-11/audit.md","reports/dual-backend-parity.latest.json","reports/governance-docs.latest.json","reports/governance.latest.json","reports/lyra-prototype-parity.latest.json","reports/migrations.latest.json","reports/model-acquisition.latest.json","reports/model-assets.latest.json","reports/model-evidence/audio-separator-smoke.latest.json","reports/model-evidence/cantonese-coarse.latest.json","reports/model-evidence/energy-dynamics.latest.json","reports/model-evidence/harmonic-functional.latest.json","reports/model-evidence/hubertfa-smoke.latest.json","reports/model-evidence/hubertfa-sofa-fusion-smoke.latest.json","reports/model-evidence/key-v2.latest.json","reports/model-evidence/larsnet-smoke.latest.json","reports/model-evidence/mms-fa-smoke.latest.json","reports/model-evidence/pipeline-smoke.latest.json","reports/model-evidence/qingtian-pipeline-proposal.latest.json","reports/model-evidence/qingtian-precision.latest.json","reports/model-evidence/separation-smoke.latest.json","reports/model-evidence/sofa-acoustic-smoke.latest.json","reports/model-evidence/stars-align-smoke.latest.json","reports/model-evidence/stars-qingtian-precision.latest.json","reports/model-evidence/stars-smoke.latest.json","reports/model-evidence/structure-repetition.latest.json","reports/model-evidence/structure-smoke.latest.json","reports/model-evidence/vocal-classification-models.latest.json","reports/model-evidence/vocal-melody.latest.json","reports/naming.latest.json","reports/order-concurrency-guard.latest.json","reports/runtime-acceptance.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/song-library.latest.json","reports/ui-acceptance.latest.json","reports/validation-source.latest.json","scripts/acquire-models.mjs","scripts/check-alignment-models.mjs","scripts/check-contract-consumers.mjs","scripts/check-dual-backend-parity.mjs","scripts/check-governance-docs.mjs","scripts/check-lyra-prototype-parity.mjs","scripts/check-migrations.mjs","scripts/check-model-assets.mjs","scripts/check-naming.mjs","scripts/check-order-concurrency-guard.mjs","scripts/check-runtime-acceptance.mjs","scripts/check-schema-sync.mjs","scripts/check-song-library.mjs","scripts/check-ui-acceptance.mjs","scripts/check-validation-source.mjs","scripts/governance-report.mjs","tsconfig.base.json","turbo.json","workers/audio-separator/README.md","workers/audio-separator/requirements_audio_separator.txt","workers/audio-separator/run_separation.py","workers/coarse/README.md","workers/coarse/eval_language_routing.py","workers/coarse/requirements_coarse.txt","workers/coarse/run_coarse.py","workers/fusion/README.md","workers/fusion/run_fusion.py","workers/hubertfa/README.md","workers/hubertfa/requirements_onnx_cpu.txt","workers/hubertfa/scripts/run_hubertfa_align.py","workers/larsnet/README.md","workers/larsnet/run_larsnet.py","workers/lyrics-cleaner/run_clean_lyrics.py","workers/mms-fa/README.md","workers/mms-fa/requirements_mms_fa.txt","workers/mms-fa/run_mms_fa.py","workers/pipeline/README.md","workers/pipeline/compare_with_kas.py","workers/pipeline/g2p.py","workers/pipeline/requirements.txt","workers/pipeline/run_pipeline.py","workers/separation/README.md","workers/separation/run_separation.py","workers/sofa-acoustic/README.md","workers/sofa-acoustic/requirements.txt","workers/sofa-acoustic/run_sofa_acoustic.py","workers/sofa-acoustic/vendor/sofa/.gitignore","workers/sofa-acoustic/vendor/sofa/LICENSE","workers/sofa-acoustic/vendor/sofa/README.MD","workers/sofa-acoustic/vendor/sofa/README_zh.MD","workers/sofa-acoustic/vendor/sofa/binarize.py","workers/sofa-acoustic/vendor/sofa/ckpt/.gitkeep","workers/sofa-acoustic/vendor/sofa/configs/binarize_config.yaml","workers/sofa-acoustic/vendor/sofa/configs/train_config.yaml","workers/sofa-acoustic/vendor/sofa/data/.gitkeep","workers/sofa-acoustic/vendor/sofa/data/binary/.gitkeep","workers/sofa-acoustic/vendor/sofa/dataset.py","workers/sofa-acoustic/vendor/sofa/dictionary/.gitkeep","workers/sofa-acoustic/vendor/sofa/dictionary/opencpop-extension.txt","workers/sofa-acoustic/vendor/sofa/evaluate.py","workers/sofa-acoustic/vendor/sofa/example.png","workers/sofa-acoustic/vendor/sofa/infer.py","workers/sofa-acoustic/vendor/sofa/modules/AP_detector/__init__.py","workers/sofa-acoustic/vendor/sofa/modules/AP_detector/base_detector.py","workers/sofa-acoustic/vendor/sofa/modules/AP_detector/loudnesss_pectralcentroid_detector.py","workers/sofa-acoustic/vendor/sofa/modules/AP_detector/none_detector.py","workers/sofa-acoustic/vendor/sofa/modules/__init__.py","workers/sofa-acoustic/vendor/sofa/modules/g2p/__init__.py","workers/sofa-acoustic/vendor/sofa/modules/g2p/base_g2p.py","workers/sofa-acoustic/vendor/sofa/modules/g2p/dictionary_g2p.py","workers/sofa-acoustic/vendor/sofa/modules/g2p/none_g2p.py","workers/sofa-acoustic/vendor/sofa/modules/g2p/phoneme_g2p.py","workers/sofa-acoustic/vendor/sofa/modules/g2p/readme_g2p.md","workers/sofa-acoustic/vendor/sofa/modules/g2p/readme_g2p_zh.md","workers/sofa-acoustic/vendor/sofa/modules/layer/__init__.py","workers/sofa-acoustic/vendor/sofa/modules/layer/activation/GLU.py","workers/sofa-acoustic/vendor/sofa/modules/layer/activation/__init__.py","workers/sofa-acoustic/vendor/sofa/modules/layer/backbone/__init__.py","workers/sofa-acoustic/vendor/sofa/modules/layer/backbone/unet.py","workers/sofa-acoustic/vendor/sofa/modules/layer/block/__init__.py","workers/sofa-acoustic/vendor/sofa/modules/layer/block/attention.py","workers/sofa-acoustic/vendor/sofa/modules/layer/block/conformer.py","workers/sofa-acoustic/vendor/sofa/modules/layer/block/convolution.py","workers/sofa-acoustic/vendor/sofa/modules/layer/block/func_module.py","workers/sofa-acoustic/vendor/sofa/modules/layer/block/residual.py","workers/sofa-acoustic/vendor/sofa/modules/layer/block/resnet_block.py","workers/sofa-acoustic/vendor/sofa/modules/layer/scaling/__init__.py","workers/sofa-acoustic/vendor/sofa/modules/layer/scaling/base.py","workers/sofa-acoustic/vendor/sofa/modules/layer/scaling/stride_conv.py","workers/sofa-acoustic/vendor/sofa/modules/loss/BinaryEMDLoss.py","workers/sofa-acoustic/vendor/sofa/modules/loss/GHMLoss.py","workers/sofa-acoustic/vendor/sofa/modules/loss/__init__.py","workers/sofa-acoustic/vendor/sofa/modules/rmvpe/__init__.py","workers/sofa-acoustic/vendor/sofa/modules/rmvpe/constants.py","workers/sofa-acoustic/vendor/sofa/modules/rmvpe/deepunet.py","workers/sofa-acoustic/vendor/sofa/modules/rmvpe/inference.py","workers/sofa-acoustic/vendor/sofa/modules/rmvpe/model.py","workers/sofa-acoustic/vendor/sofa/modules/rmvpe/seq.py","workers/sofa-acoustic/vendor/sofa/modules/rmvpe/spec.py","workers/sofa-acoustic/vendor/sofa/modules/rmvpe/utils.py","workers/sofa-acoustic/vendor/sofa/modules/scheduler/__init__.py","workers/sofa-acoustic/vendor/sofa/modules/scheduler/gaussian_ramp_up_scheduler.py","workers/sofa-acoustic/vendor/sofa/modules/scheduler/none_scheduler.py","workers/sofa-acoustic/vendor/sofa/modules/task/forced_alignment.py","workers/sofa-acoustic/vendor/sofa/modules/utils/__init__.py","workers/sofa-acoustic/vendor/sofa/modules/utils/export_tool.py","workers/sofa-acoustic/vendor/sofa/modules/utils/get_melspec.py","workers/sofa-acoustic/vendor/sofa/modules/utils/label.py","workers/sofa-acoustic/vendor/sofa/modules/utils/load_wav.py","workers/sofa-acoustic/vendor/sofa/modules/utils/metrics.py","workers/sofa-acoustic/vendor/sofa/modules/utils/metrics_test.py","workers/sofa-acoustic/vendor/sofa/modules/utils/plot.py","workers/sofa-acoustic/vendor/sofa/modules/utils/post_processing.py","workers/sofa-acoustic/vendor/sofa/requirements.txt","workers/sofa-acoustic/vendor/sofa/segments/.gitkeep","workers/sofa-acoustic/vendor/sofa/train.py","workers/sofa-verifier/README.md","workers/sofa-verifier/scripts/run_sofa_align.py","workers/stars/README.md","workers/stars/g2p_stars.py","workers/stars/requirements_stars.txt","workers/stars/rmvpe/LICENSE-upstream-STARS.txt","workers/stars/rmvpe/__init__.py","workers/stars/rmvpe/constants.py","workers/stars/rmvpe/deepunet.py","workers/stars/rmvpe/mel.py","workers/stars/rmvpe/model.py","workers/stars/rmvpe/seq.py","workers/stars/rmvpe/spec.py","workers/stars/rmvpe/utils.py","workers/stars/run_stars.py","workers/stars/stars_align.py","workers/stars/vendor_stars/LICENSE-upstream-STARS.txt","workers/stars/vendor_stars/_VENDOR_NOTE.md","workers/stars/vendor_stars/_reference/inference_stars.py","workers/stars/vendor_stars/_reference/mixedtext2phoneme.py","workers/stars/vendor_stars/_reference/process_ph.py","workers/stars/vendor_stars/chinese_and_english_phone_set.json","workers/stars/vendor_stars/chinese_phone_set.json","workers/stars/vendor_stars/configs/base.yaml","workers/stars/vendor_stars/configs/stars_bilingual.yaml","workers/stars/vendor_stars/configs/stars_chinese.yaml","workers/stars/vendor_stars/modules/__init__.py","workers/stars/vendor_stars/modules/commons/__init__.py","workers/stars/vendor_stars/modules/commons/conformer/__init__.py","workers/stars/vendor_stars/modules/commons/conformer/conformer.py","workers/stars/vendor_stars/modules/commons/conformer/espnet_positional_embedding.py","workers/stars/vendor_stars/modules/commons/conformer/espnet_transformer_attn.py","workers/stars/vendor_stars/modules/commons/conformer/layers.py","workers/stars/vendor_stars/modules/commons/conv.py","workers/stars/vendor_stars/modules/commons/layers.py","workers/stars/vendor_stars/modules/commons/transformer.py","workers/stars/vendor_stars/modules/pe/__init__.py","workers/stars/vendor_stars/modules/pe/rmvpe/__init__.py","workers/stars/vendor_stars/modules/pe/rmvpe/constants.py","workers/stars/vendor_stars/modules/pe/rmvpe/deepunet.py","workers/stars/vendor_stars/modules/pe/rmvpe/extractor.py","workers/stars/vendor_stars/modules/pe/rmvpe/inference.py","workers/stars/vendor_stars/modules/pe/rmvpe/model.py","workers/stars/vendor_stars/modules/pe/rmvpe/seq.py","workers/stars/vendor_stars/modules/pe/rmvpe/spec.py","workers/stars/vendor_stars/modules/pe/rmvpe/utils.py","workers/stars/vendor_stars/modules/stars/__init__.py","workers/stars/vendor_stars/modules/stars/stars.py","workers/stars/vendor_stars/modules/stars/unet.py","workers/stars/vendor_stars/modules/stars/utils.py","workers/stars/vendor_stars/tasks/__init__.py","workers/stars/vendor_stars/tasks/stars/__init__.py","workers/stars/vendor_stars/tasks/stars/dataset.py","workers/stars/vendor_stars/tasks/stars/utils.py","workers/stars/vendor_stars/utils/__init__.py","workers/stars/vendor_stars/utils/audio/__init__.py","workers/stars/vendor_stars/utils/audio/align.py","workers/stars/vendor_stars/utils/audio/mel.py","workers/stars/vendor_stars/utils/audio/pitch_utils.py","workers/stars/vendor_stars/utils/commons/__init__.py","workers/stars/vendor_stars/utils/commons/ckpt_utils.py","workers/stars/vendor_stars/utils/commons/dataset_utils.py","workers/stars/vendor_stars/utils/commons/gpu_mem_track.py","workers/stars/vendor_stars/utils/commons/hparams.py","workers/stars/vendor_stars/utils/commons/indexed_datasets.py","workers/stars/vendor_stars/utils/commons/signal.py","workers/stars/vendor_stars/utils/nn/__init__.py","workers/stars/vendor_stars/utils/nn/seq_utils.py","workers/stars/vendor_stars/utils/os_utils.py","workers/stars/vendor_stars/utils/text/__init__.py","workers/stars/vendor_stars/utils/text/text_encoder.py","workers/structure/README.md","workers/structure/requirements_structure.txt","workers/structure/run_structure.py","workers/structure/vendor/wav2vec2-conformer-rope-large-960h-ft.config.json","曲库/library.latest.json"],"removed":[],"modified":[]}],"total_commits":0,"head_commit":{"id":"f73daf0a17c4cd19344f03ba21afcc326a49a650","message":"初始提交:嗨赞AI制作平台(含 C1–C59 全部治理轮次)\n\n从 基础框架 派生的 AI 歌词对齐制作平台。契约单源 @repo/contracts + 双后端\n(NestJS/Fastify)对等 + Next.js studio 前端 + Python 模型 workers。\n\n治理基线(reports/baseline.json 棘轮):\n- 静态门禁 pnpm check 全绿(naming/schema/validation/contract-consumers/\n dual-backend/concurrency-guard/migrations/models/alignment-models/library/\n lyra-parity/governance-docs)\n- check:runtime 316/316、check:ui 32/32、own-tests 39 文件 348 用例\n\n体积纪律:模型权重(~13GB)与曲库音频(含受版权保护素材)不入库,\n仅保留 models/model-assets.v1.json 与 曲库/library.latest.json 两份登记真源\n(check:models / check:library 据此比对磁盘实况)。\n\nCo-Authored-By: Claude Fable 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/haizan-ai-production-platform/commit/f73daf0a17c4cd19344f03ba21afcc326a49a650","author":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"verification":null,"timestamp":"2026-07-13T20:23:16-07:00","added":[".claude/agents/acceptance-runner.md",".claude/agents/module-blueprint.md",".claude/launch.json",".claude/skills/business-module-intake/SKILL.md",".claude/skills/frontend-api-react/SKILL.md",".claude/skills/frontend-view-react/SKILL.md",".claude/skills/frontend-view-react/references/view-templates.md",".claude/skills/fullstack-7layer-react/SKILL.md",".claude/skills/fullstack-7layer-react/references/fullstack-react-templates.md",".claude/skills/zustand-store/SKILL.md",".github/pull_request_template.md",".github/workflows/governance.yml",".gitignore","AGENTS.md","CLAUDE.md","README.md","apps/api-fastify/.env.example","apps/api-fastify/.gitignore","apps/api-fastify/package.json","apps/api-fastify/pnpm-lock.yaml","apps/api-fastify/prisma/migrations/20260608150500_init/migration.sql","apps/api-fastify/prisma/migrations/20260705080000_outbox_dead_letter/migration.sql","apps/api-fastify/prisma/migrations/20260709151138_alignment_domain/migration.sql","apps/api-fastify/prisma/migrations/migration_lock.toml","apps/api-fastify/prisma/schema.prisma","apps/api-fastify/src/app.ts","apps/api-fastify/src/lib/orderMachine.ts","apps/api-fastify/src/lib/statemachine.ts","apps/api-fastify/src/modules/alignment/alignment-coarse.ts","apps/api-fastify/src/modules/alignment/alignment-mms-fa.ts","apps/api-fastify/src/modules/alignment/alignment-pipeline.ts","apps/api-fastify/src/modules/alignment/alignment-scoring.ts","apps/api-fastify/src/modules/alignment/alignment-separation-htdemucs.ts","apps/api-fastify/src/modules/alignment/alignment-separation-larsnet.ts","apps/api-fastify/src/modules/alignment/alignment-separation.ts","apps/api-fastify/src/modules/alignment/alignment-structure.ts","apps/api-fastify/src/modules/alignment/alignment-verification.ts","apps/api-fastify/src/modules/alignment/alignment.service.ts","apps/api-fastify/src/modules/orders/orders.service.ts","apps/api-fastify/src/modules/song-assets/song-assets.service.ts","apps/api-fastify/src/modules/tenant.ts","apps/api-fastify/src/modules/users/users.service.ts","apps/api-fastify/src/plugins/events.ts","apps/api-fastify/src/plugins/outbox.ts","apps/api-fastify/src/plugins/prisma.ts","apps/api-fastify/src/plugins/queue.ts","apps/api-fastify/src/plugins/redis.ts","apps/api-fastify/src/plugins/storage.ts","apps/api-fastify/src/routes/alignment.ts","apps/api-fastify/src/routes/health.ts","apps/api-fastify/src/routes/jobs.ts","apps/api-fastify/src/routes/orders.ts","apps/api-fastify/src/routes/song-assets.ts","apps/api-fastify/src/routes/sse.ts","apps/api-fastify/src/routes/users.ts","apps/api-fastify/src/routes/ws.ts","apps/api-fastify/src/server.ts","apps/api-fastify/src/types.ts","apps/api-fastify/test/alignment.coarse.test.ts","apps/api-fastify/test/alignment.http.test.ts","apps/api-fastify/test/alignment.integration.test.ts","apps/api-fastify/test/alignment.mms-fa.test.ts","apps/api-fastify/test/alignment.pipeline.test.ts","apps/api-fastify/test/alignment.scoring.test.ts","apps/api-fastify/test/alignment.separation-htdemucs.test.ts","apps/api-fastify/test/alignment.separation-larsnet.test.ts","apps/api-fastify/test/alignment.separation.test.ts","apps/api-fastify/test/alignment.structure.test.ts","apps/api-fastify/test/alignment.verification.test.ts","apps/api-fastify/test/http.acceptance.test.ts","apps/api-fastify/test/orders.integration.test.ts","apps/api-fastify/test/outbox.deadletter.test.ts","apps/api-fastify/test/realtime.tenant.test.ts","apps/api-fastify/tsconfig.json","apps/api-fastify/vitest.config.ts","apps/api-nestjs/.env.example","apps/api-nestjs/.gitignore","apps/api-nestjs/docker-compose.yml","apps/api-nestjs/nest-cli.json","apps/api-nestjs/package.json","apps/api-nestjs/pnpm-lock.yaml","apps/api-nestjs/prisma/migrations/20260608150500_init/migration.sql","apps/api-nestjs/prisma/migrations/20260705080000_outbox_dead_letter/migration.sql","apps/api-nestjs/prisma/migrations/20260709151138_alignment_domain/migration.sql","apps/api-nestjs/prisma/migrations/migration_lock.toml","apps/api-nestjs/prisma/schema.prisma","apps/api-nestjs/prisma/seed.ts","apps/api-nestjs/src/alignment/alignment.controller.ts","apps/api-nestjs/src/alignment/alignment.module.ts","apps/api-nestjs/src/alignment/alignment.service.ts","apps/api-nestjs/src/alignment/song-assets.controller.ts","apps/api-nestjs/src/alignment/song-assets.service.ts","apps/api-nestjs/src/alignment/storage.provider.ts","apps/api-nestjs/src/app.module.ts","apps/api-nestjs/src/common/api-error-body.filter.ts","apps/api-nestjs/src/common/envelope.ts","apps/api-nestjs/src/common/tenant.decorator.ts","apps/api-nestjs/src/common/zod-validation.pipe.ts","apps/api-nestjs/src/create-app.ts","apps/api-nestjs/src/events/event-bus.service.ts","apps/api-nestjs/src/events/events.gateway.ts","apps/api-nestjs/src/events/events.module.ts","apps/api-nestjs/src/events/fanout.service.ts","apps/api-nestjs/src/events/outbox-dispatcher.service.ts","apps/api-nestjs/src/health/health.controller.ts","apps/api-nestjs/src/health/health.module.ts","apps/api-nestjs/src/main.ts","apps/api-nestjs/src/orders/orders.controller.ts","apps/api-nestjs/src/orders/orders.module.ts","apps/api-nestjs/src/orders/orders.service.ts","apps/api-nestjs/src/prisma/prisma.module.ts","apps/api-nestjs/src/prisma/prisma.service.ts","apps/api-nestjs/src/queue/jobs.controller.ts","apps/api-nestjs/src/queue/jobs.processor.ts","apps/api-nestjs/src/queue/queue.module.ts","apps/api-nestjs/src/queue/queue.types.ts","apps/api-nestjs/src/redis/redis.module.ts","apps/api-nestjs/src/sse/sse.controller.ts","apps/api-nestjs/src/sse/sse.module.ts","apps/api-nestjs/src/statemachine/index.ts","apps/api-nestjs/src/statemachine/order.machine.ts","apps/api-nestjs/src/statemachine/statemachine.engine.ts","apps/api-nestjs/src/statemachine/statemachine.types.ts","apps/api-nestjs/src/users/users.controller.ts","apps/api-nestjs/src/users/users.module.ts","apps/api-nestjs/src/users/users.service.ts","apps/api-nestjs/test/alignment.coarse.test.ts","apps/api-nestjs/test/alignment.http.test.ts","apps/api-nestjs/test/alignment.integration.test.ts","apps/api-nestjs/test/alignment.mms-fa.test.ts","apps/api-nestjs/test/alignment.pipeline.test.ts","apps/api-nestjs/test/alignment.scoring.test.ts","apps/api-nestjs/test/alignment.separation-htdemucs.test.ts","apps/api-nestjs/test/alignment.separation-larsnet.test.ts","apps/api-nestjs/test/alignment.separation.test.ts","apps/api-nestjs/test/alignment.structure.test.ts","apps/api-nestjs/test/alignment.verification.test.ts","apps/api-nestjs/test/http.acceptance.test.ts","apps/api-nestjs/test/orders.integration.test.ts","apps/api-nestjs/test/outbox.deadletter.test.ts","apps/api-nestjs/test/realtime.tenant.test.ts","apps/api-nestjs/tsconfig.build.json","apps/api-nestjs/tsconfig.json","apps/api-nestjs/vitest.config.ts","apps/web/.env.example","apps/web/.gitignore","apps/web/components.json","apps/web/e2e/acceptance.spec.ts","apps/web/e2e/baselines/lyra-prototype-v3-batch.png","apps/web/e2e/baselines/lyra-prototype-v3-delivery.png","apps/web/e2e/baselines/lyra-prototype-v3-info.png","apps/web/e2e/baselines/lyra-prototype-v3-workbench.png","apps/web/e2e/lyra-studio.spec.ts","apps/web/eslint.config.mjs","apps/web/next.config.ts","apps/web/package.json","apps/web/playwright.config.ts","apps/web/pnpm-lock.yaml","apps/web/postcss.config.js","apps/web/src/app/globals.css","apps/web/src/app/layout.tsx","apps/web/src/app/page.tsx","apps/web/src/app/studio/page.tsx","apps/web/src/components/EventFeed.tsx","apps/web/src/components/OrdersPanel.tsx","apps/web/src/components/RealtimeBar.tsx","apps/web/src/components/UsersPanel.tsx","apps/web/src/components/ui/badge.tsx","apps/web/src/components/ui/button.tsx","apps/web/src/components/ui/card.tsx","apps/web/src/components/ui/input.tsx","apps/web/src/components/ui/label.tsx","apps/web/src/components/ui/separator.tsx","apps/web/src/features/alignment/api.ts","apps/web/src/features/alignment/queries.ts","apps/web/src/features/lyra-studio/components/LyraStudio.tsx","apps/web/src/features/lyra-studio/components/PipelineBar.tsx","apps/web/src/features/lyra-studio/components/RunLoadErrorBanner.tsx","apps/web/src/features/lyra-studio/components/TopBar.tsx","apps/web/src/features/lyra-studio/components/canvas/PitchGridCanvas.tsx","apps/web/src/features/lyra-studio/components/canvas/VocalSpectrumCanvas.tsx","apps/web/src/features/lyra-studio/components/center/MvViewport.tsx","apps/web/src/features/lyra-studio/components/center/Transport.tsx","apps/web/src/features/lyra-studio/components/detail/RegionControlBar.tsx","apps/web/src/features/lyra-studio/components/lanes/LyricWorkspace.tsx","apps/web/src/features/lyra-studio/components/lanes/MainPlayhead.tsx","apps/web/src/features/lyra-studio/components/lanes/PhonemeLane.tsx","apps/web/src/features/lyra-studio/components/lanes/PitchLane.tsx","apps/web/src/features/lyra-studio/components/lanes/RefineLane.tsx","apps/web/src/features/lyra-studio/components/lanes/RegionLane.tsx","apps/web/src/features/lyra-studio/components/lanes/SentenceLane.tsx","apps/web/src/features/lyra-studio/components/lanes/VocalLane.tsx","apps/web/src/features/lyra-studio/components/left/AnalysisStub.tsx","apps/web/src/features/lyra-studio/components/left/LeftPanel.tsx","apps/web/src/features/lyra-studio/components/left/TrackCard.tsx","apps/web/src/features/lyra-studio/components/left/TrackMixer.tsx","apps/web/src/features/lyra-studio/components/modals/BatchModal.tsx","apps/web/src/features/lyra-studio/components/modals/CommitModal.tsx","apps/web/src/features/lyra-studio/components/modals/LoadModal.tsx","apps/web/src/features/lyra-studio/components/modals/ModalShell.tsx","apps/web/src/features/lyra-studio/components/modals/ResetModal.tsx","apps/web/src/features/lyra-studio/components/modals/StepModal.tsx","apps/web/src/features/lyra-studio/components/right/InfoTab.tsx","apps/web/src/features/lyra-studio/components/right/LyricsTab.tsx","apps/web/src/features/lyra-studio/components/right/PendingTab.tsx","apps/web/src/features/lyra-studio/components/right/RightPanel.tsx","apps/web/src/features/lyra-studio/components/right/RunEvidenceCard.tsx","apps/web/src/features/lyra-studio/components/timeline/GlobalTimeline.tsx","apps/web/src/features/lyra-studio/components/timeline/SeekWaveformCanvas.tsx","apps/web/src/features/lyra-studio/constants.ts","apps/web/src/features/lyra-studio/demoArtifacts.ts","apps/web/src/features/lyra-studio/fixtures/panels.ts","apps/web/src/features/lyra-studio/fixtures/segments.ts","apps/web/src/features/lyra-studio/fixtures/tracks.ts","apps/web/src/features/lyra-studio/hooks/useAudioPlayback.ts","apps/web/src/features/lyra-studio/hooks/useGlobalHotkeys.ts","apps/web/src/features/lyra-studio/hooks/useLaneDrags.ts","apps/web/src/features/lyra-studio/hooks/usePointerDrag.ts","apps/web/src/features/lyra-studio/hooks/useRafClock.ts","apps/web/src/features/lyra-studio/hooks/useScaleToFit.ts","apps/web/src/features/lyra-studio/hooks/useStudioBridge.ts","apps/web/src/features/lyra-studio/hooks/useWin.ts","apps/web/src/features/lyra-studio/prototypeV3.ts","apps/web/src/features/lyra-studio/runMapping.ts","apps/web/src/features/lyra-studio/store/selectors.ts","apps/web/src/features/lyra-studio/store/useStudioStore.ts","apps/web/src/features/lyra-studio/trackAudio.ts","apps/web/src/features/lyra-studio/types.ts","apps/web/src/features/lyra-studio/utils/realSpectrum.ts","apps/web/src/features/lyra-studio/utils/realWaveform.ts","apps/web/src/features/lyra-studio/utils/seededRandom.ts","apps/web/src/features/lyra-studio/utils/spectro.ts","apps/web/src/features/lyra-studio/utils/styles.ts","apps/web/src/features/lyra-studio/utils/time.ts","apps/web/src/hooks/useRealtime.ts","apps/web/src/lib/api.ts","apps/web/src/lib/providers.tsx","apps/web/src/lib/types.ts","apps/web/src/lib/utils.ts","apps/web/src/store/realtime.ts","apps/web/src/store/useAppStore.ts","apps/web/tailwind.config.ts","apps/web/tsconfig.json","design-qa.md","docker-compose.yml","docs/README.md","docs/adr/0001-use-typescript-fullstack.md","docs/adr/0002-use-nextjs-app-router.md","docs/adr/0003-use-nestjs-with-fastify-adapter.md","docs/adr/0004-use-postgresql.md","docs/adr/0005-use-prisma.md","docs/adr/0006-realtime-sse-and-websocket.md","docs/adr/0007-use-bullmq-queue.md","docs/adr/0008-monorepo-pnpm-turborepo.md","docs/adr/0009-dual-backend-governance-parity.md","docs/adr/README.md","docs/domain-glossary.md","docs/domain/lyric-alignment-production-blueprint.md","docs/domain/owner-matrix.md","docs/domain/stars-full-alignment-integration-assessment.md","docs/migration-notes.md","docs/prd/lyra-alignment-studio-prd.md","docs/prototypes/Lyra Alignment Studio (3)_副本.html","docs/prototypes/_lyra_extracted/0f3afcd6-3e42-43c6-bc2c-f7a7241d8cfc.js","docs/prototypes/_lyra_extracted/5e249108-9e25-49d4-aead-4a42da391445.txt","docs/prototypes/_lyra_extracted/6b20a626-d5f0-4ece-a2d4-3f3f7a96342e.txt","docs/prototypes/_lyra_extracted/78e3f258-31fe-4530-a312-1113810fd6c7.txt","docs/prototypes/_lyra_extracted/85a75d15-031b-454b-b8a4-728a88f2c03e.js","docs/prototypes/_lyra_extracted/8905ed0e-91a0-4b9e-8d49-fa1867515d0f.js","docs/prototypes/_lyra_extracted/app-dc-script.js","docs/prototypes/_lyra_extracted/e3ceeb25-f278-400d-8f89-200ca38d9d34.txt","docs/prototypes/_lyra_extracted/e456d310-3c72-4ccc-91a6-f34216a66722.txt","docs/prototypes/_lyra_extracted/e9425a8b-83ce-48d4-94d4-eb98f6c69c2b.txt","docs/prototypes/_lyra_extracted/template-body.html","docs/prototypes/_lyra_extracted/template-styles.css","docs/prototypes/_lyra_extracted/template.html","docs/prototypes/lyra-alignment-studio-elevation.md","docs/prototypes/lyra-alignment-studio-v2.html","docs/standards/api-standard.md","docs/standards/backend-standard.md","docs/standards/database-standard.md","docs/standards/frontend-standard.md","docs/standards/git-standard.md","docs/standards/naming-standard.md","docs/standards/review-standard.md","models/model-assets.v1.json","package.json","packages/config/eslint/base.mjs","packages/config/package.json","packages/config/prettier/index.json","packages/config/tsconfig/base.json","packages/config/tsconfig/nextjs.json","packages/config/tsconfig/node.json","packages/contracts/package.json","packages/contracts/src/alignment-export.ts","packages/contracts/src/alignment-models.test.ts","packages/contracts/src/alignment-models.ts","packages/contracts/src/alignment.test.ts","packages/contracts/src/alignment.ts","packages/contracts/src/contracts.test.ts","packages/contracts/src/index.ts","packages/contracts/src/order.ts","packages/contracts/src/realtime.ts","packages/contracts/src/statemachine.test.ts","packages/contracts/src/statemachine.ts","packages/contracts/src/tenant.ts","packages/contracts/src/user.ts","packages/contracts/src/vtc.ts","packages/contracts/tsconfig.json","packages/model-readiness/package.json","packages/model-readiness/src/index.ts","packages/model-readiness/src/readiness.test.ts","packages/model-readiness/tsconfig.json","packages/pipeline-runner/package.json","packages/pipeline-runner/src/index.ts","packages/pipeline-runner/src/runner.test.ts","packages/pipeline-runner/tsconfig.json","packages/storage/package.json","packages/storage/src/index.ts","packages/storage/src/storage.test.ts","packages/storage/tsconfig.json","pnpm-lock.yaml","pnpm-workspace.yaml","reports/alignment-integrity-qingtian.latest.json","reports/alignment-models.latest.json","reports/alignment-text-crosscheck-qingtian.latest.json","reports/baseline.json","reports/contract-consumers.latest.json","reports/design-audit/material-loading-2026-07-11/01-material-loading-current.png","reports/design-audit/material-loading-2026-07-11/02-material-loading-improved.png","reports/design-audit/material-loading-2026-07-11/03-material-loading-create.png","reports/design-audit/material-loading-2026-07-11/audit.md","reports/dual-backend-parity.latest.json","reports/governance-docs.latest.json","reports/governance.latest.json","reports/lyra-prototype-parity.latest.json","reports/migrations.latest.json","reports/model-acquisition.latest.json","reports/model-assets.latest.json","reports/model-evidence/audio-separator-smoke.latest.json","reports/model-evidence/cantonese-coarse.latest.json","reports/model-evidence/energy-dynamics.latest.json","reports/model-evidence/harmonic-functional.latest.json","reports/model-evidence/hubertfa-smoke.latest.json","reports/model-evidence/hubertfa-sofa-fusion-smoke.latest.json","reports/model-evidence/key-v2.latest.json","reports/model-evidence/larsnet-smoke.latest.json","reports/model-evidence/mms-fa-smoke.latest.json","reports/model-evidence/pipeline-smoke.latest.json","reports/model-evidence/qingtian-pipeline-proposal.latest.json","reports/model-evidence/qingtian-precision.latest.json","reports/model-evidence/separation-smoke.latest.json","reports/model-evidence/sofa-acoustic-smoke.latest.json","reports/model-evidence/stars-align-smoke.latest.json","reports/model-evidence/stars-qingtian-precision.latest.json","reports/model-evidence/stars-smoke.latest.json","reports/model-evidence/structure-repetition.latest.json","reports/model-evidence/structure-smoke.latest.json","reports/model-evidence/vocal-classification-models.latest.json","reports/model-evidence/vocal-melody.latest.json","reports/naming.latest.json","reports/order-concurrency-guard.latest.json","reports/runtime-acceptance.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/song-library.latest.json","reports/ui-acceptance.latest.json","reports/validation-source.latest.json","scripts/acquire-models.mjs","scripts/check-alignment-models.mjs","scripts/check-contract-consumers.mjs","scripts/check-dual-backend-parity.mjs","scripts/check-governance-docs.mjs","scripts/check-lyra-prototype-parity.mjs","scripts/check-migrations.mjs","scripts/check-model-assets.mjs","scripts/check-naming.mjs","scripts/check-order-concurrency-guard.mjs","scripts/check-runtime-acceptance.mjs","scripts/check-schema-sync.mjs","scripts/check-song-library.mjs","scripts/check-ui-acceptance.mjs","scripts/check-validation-source.mjs","scripts/governance-report.mjs","tsconfig.base.json","turbo.json","workers/audio-separator/README.md","workers/audio-separator/requirements_audio_separator.txt","workers/audio-separator/run_separation.py","workers/coarse/README.md","workers/coarse/eval_language_routing.py","workers/coarse/requirements_coarse.txt","workers/coarse/run_coarse.py","workers/fusion/README.md","workers/fusion/run_fusion.py","workers/hubertfa/README.md","workers/hubertfa/requirements_onnx_cpu.txt","workers/hubertfa/scripts/run_hubertfa_align.py","workers/larsnet/README.md","workers/larsnet/run_larsnet.py","workers/lyrics-cleaner/run_clean_lyrics.py","workers/mms-fa/README.md","workers/mms-fa/requirements_mms_fa.txt","workers/mms-fa/run_mms_fa.py","workers/pipeline/README.md","workers/pipeline/compare_with_kas.py","workers/pipeline/g2p.py","workers/pipeline/requirements.txt","workers/pipeline/run_pipeline.py","workers/separation/README.md","workers/separation/run_separation.py","workers/sofa-acoustic/README.md","workers/sofa-acoustic/requirements.txt","workers/sofa-acoustic/run_sofa_acoustic.py","workers/sofa-acoustic/vendor/sofa/.gitignore","workers/sofa-acoustic/vendor/sofa/LICENSE","workers/sofa-acoustic/vendor/sofa/README.MD","workers/sofa-acoustic/vendor/sofa/README_zh.MD","workers/sofa-acoustic/vendor/sofa/binarize.py","workers/sofa-acoustic/vendor/sofa/ckpt/.gitkeep","workers/sofa-acoustic/vendor/sofa/configs/binarize_config.yaml","workers/sofa-acoustic/vendor/sofa/configs/train_config.yaml","workers/sofa-acoustic/vendor/sofa/data/.gitkeep","workers/sofa-acoustic/vendor/sofa/data/binary/.gitkeep","workers/sofa-acoustic/vendor/sofa/dataset.py","workers/sofa-acoustic/vendor/sofa/dictionary/.gitkeep","workers/sofa-acoustic/vendor/sofa/dictionary/opencpop-extension.txt","workers/sofa-acoustic/vendor/sofa/evaluate.py","workers/sofa-acoustic/vendor/sofa/example.png","workers/sofa-acoustic/vendor/sofa/infer.py","workers/sofa-acoustic/vendor/sofa/modules/AP_detector/__init__.py","workers/sofa-acoustic/vendor/sofa/modules/AP_detector/base_detector.py","workers/sofa-acoustic/vendor/sofa/modules/AP_detector/loudnesss_pectralcentroid_detector.py","workers/sofa-acoustic/vendor/sofa/modules/AP_detector/none_detector.py","workers/sofa-acoustic/vendor/sofa/modules/__init__.py","workers/sofa-acoustic/vendor/sofa/modules/g2p/__init__.py","workers/sofa-acoustic/vendor/sofa/modules/g2p/base_g2p.py","workers/sofa-acoustic/vendor/sofa/modules/g2p/dictionary_g2p.py","workers/sofa-acoustic/vendor/sofa/modules/g2p/none_g2p.py","workers/sofa-acoustic/vendor/sofa/modules/g2p/phoneme_g2p.py","workers/sofa-acoustic/vendor/sofa/modules/g2p/readme_g2p.md","workers/sofa-acoustic/vendor/sofa/modules/g2p/readme_g2p_zh.md","workers/sofa-acoustic/vendor/sofa/modules/layer/__init__.py","workers/sofa-acoustic/vendor/sofa/modules/layer/activation/GLU.py","workers/sofa-acoustic/vendor/sofa/modules/layer/activation/__init__.py","workers/sofa-acoustic/vendor/sofa/modules/layer/backbone/__init__.py","workers/sofa-acoustic/vendor/sofa/modules/layer/backbone/unet.py","workers/sofa-acoustic/vendor/sofa/modules/layer/block/__init__.py","workers/sofa-acoustic/vendor/sofa/modules/layer/block/attention.py","workers/sofa-acoustic/vendor/sofa/modules/layer/block/conformer.py","workers/sofa-acoustic/vendor/sofa/modules/layer/block/convolution.py","workers/sofa-acoustic/vendor/sofa/modules/layer/block/func_module.py","workers/sofa-acoustic/vendor/sofa/modules/layer/block/residual.py","workers/sofa-acoustic/vendor/sofa/modules/layer/block/resnet_block.py","workers/sofa-acoustic/vendor/sofa/modules/layer/scaling/__init__.py","workers/sofa-acoustic/vendor/sofa/modules/layer/scaling/base.py","workers/sofa-acoustic/vendor/sofa/modules/layer/scaling/stride_conv.py","workers/sofa-acoustic/vendor/sofa/modules/loss/BinaryEMDLoss.py","workers/sofa-acoustic/vendor/sofa/modules/loss/GHMLoss.py","workers/sofa-acoustic/vendor/sofa/modules/loss/__init__.py","workers/sofa-acoustic/vendor/sofa/modules/rmvpe/__init__.py","workers/sofa-acoustic/vendor/sofa/modules/rmvpe/constants.py","workers/sofa-acoustic/vendor/sofa/modules/rmvpe/deepunet.py","workers/sofa-acoustic/vendor/sofa/modules/rmvpe/inference.py","workers/sofa-acoustic/vendor/sofa/modules/rmvpe/model.py","workers/sofa-acoustic/vendor/sofa/modules/rmvpe/seq.py","workers/sofa-acoustic/vendor/sofa/modules/rmvpe/spec.py","workers/sofa-acoustic/vendor/sofa/modules/rmvpe/utils.py","workers/sofa-acoustic/vendor/sofa/modules/scheduler/__init__.py","workers/sofa-acoustic/vendor/sofa/modules/scheduler/gaussian_ramp_up_scheduler.py","workers/sofa-acoustic/vendor/sofa/modules/scheduler/none_scheduler.py","workers/sofa-acoustic/vendor/sofa/modules/task/forced_alignment.py","workers/sofa-acoustic/vendor/sofa/modules/utils/__init__.py","workers/sofa-acoustic/vendor/sofa/modules/utils/export_tool.py","workers/sofa-acoustic/vendor/sofa/modules/utils/get_melspec.py","workers/sofa-acoustic/vendor/sofa/modules/utils/label.py","workers/sofa-acoustic/vendor/sofa/modules/utils/load_wav.py","workers/sofa-acoustic/vendor/sofa/modules/utils/metrics.py","workers/sofa-acoustic/vendor/sofa/modules/utils/metrics_test.py","workers/sofa-acoustic/vendor/sofa/modules/utils/plot.py","workers/sofa-acoustic/vendor/sofa/modules/utils/post_processing.py","workers/sofa-acoustic/vendor/sofa/requirements.txt","workers/sofa-acoustic/vendor/sofa/segments/.gitkeep","workers/sofa-acoustic/vendor/sofa/train.py","workers/sofa-verifier/README.md","workers/sofa-verifier/scripts/run_sofa_align.py","workers/stars/README.md","workers/stars/g2p_stars.py","workers/stars/requirements_stars.txt","workers/stars/rmvpe/LICENSE-upstream-STARS.txt","workers/stars/rmvpe/__init__.py","workers/stars/rmvpe/constants.py","workers/stars/rmvpe/deepunet.py","workers/stars/rmvpe/mel.py","workers/stars/rmvpe/model.py","workers/stars/rmvpe/seq.py","workers/stars/rmvpe/spec.py","workers/stars/rmvpe/utils.py","workers/stars/run_stars.py","workers/stars/stars_align.py","workers/stars/vendor_stars/LICENSE-upstream-STARS.txt","workers/stars/vendor_stars/_VENDOR_NOTE.md","workers/stars/vendor_stars/_reference/inference_stars.py","workers/stars/vendor_stars/_reference/mixedtext2phoneme.py","workers/stars/vendor_stars/_reference/process_ph.py","workers/stars/vendor_stars/chinese_and_english_phone_set.json","workers/stars/vendor_stars/chinese_phone_set.json","workers/stars/vendor_stars/configs/base.yaml","workers/stars/vendor_stars/configs/stars_bilingual.yaml","workers/stars/vendor_stars/configs/stars_chinese.yaml","workers/stars/vendor_stars/modules/__init__.py","workers/stars/vendor_stars/modules/commons/__init__.py","workers/stars/vendor_stars/modules/commons/conformer/__init__.py","workers/stars/vendor_stars/modules/commons/conformer/conformer.py","workers/stars/vendor_stars/modules/commons/conformer/espnet_positional_embedding.py","workers/stars/vendor_stars/modules/commons/conformer/espnet_transformer_attn.py","workers/stars/vendor_stars/modules/commons/conformer/layers.py","workers/stars/vendor_stars/modules/commons/conv.py","workers/stars/vendor_stars/modules/commons/layers.py","workers/stars/vendor_stars/modules/commons/transformer.py","workers/stars/vendor_stars/modules/pe/__init__.py","workers/stars/vendor_stars/modules/pe/rmvpe/__init__.py","workers/stars/vendor_stars/modules/pe/rmvpe/constants.py","workers/stars/vendor_stars/modules/pe/rmvpe/deepunet.py","workers/stars/vendor_stars/modules/pe/rmvpe/extractor.py","workers/stars/vendor_stars/modules/pe/rmvpe/inference.py","workers/stars/vendor_stars/modules/pe/rmvpe/model.py","workers/stars/vendor_stars/modules/pe/rmvpe/seq.py","workers/stars/vendor_stars/modules/pe/rmvpe/spec.py","workers/stars/vendor_stars/modules/pe/rmvpe/utils.py","workers/stars/vendor_stars/modules/stars/__init__.py","workers/stars/vendor_stars/modules/stars/stars.py","workers/stars/vendor_stars/modules/stars/unet.py","workers/stars/vendor_stars/modules/stars/utils.py","workers/stars/vendor_stars/tasks/__init__.py","workers/stars/vendor_stars/tasks/stars/__init__.py","workers/stars/vendor_stars/tasks/stars/dataset.py","workers/stars/vendor_stars/tasks/stars/utils.py","workers/stars/vendor_stars/utils/__init__.py","workers/stars/vendor_stars/utils/audio/__init__.py","workers/stars/vendor_stars/utils/audio/align.py","workers/stars/vendor_stars/utils/audio/mel.py","workers/stars/vendor_stars/utils/audio/pitch_utils.py","workers/stars/vendor_stars/utils/commons/__init__.py","workers/stars/vendor_stars/utils/commons/ckpt_utils.py","workers/stars/vendor_stars/utils/commons/dataset_utils.py","workers/stars/vendor_stars/utils/commons/gpu_mem_track.py","workers/stars/vendor_stars/utils/commons/hparams.py","workers/stars/vendor_stars/utils/commons/indexed_datasets.py","workers/stars/vendor_stars/utils/commons/signal.py","workers/stars/vendor_stars/utils/nn/__init__.py","workers/stars/vendor_stars/utils/nn/seq_utils.py","workers/stars/vendor_stars/utils/os_utils.py","workers/stars/vendor_stars/utils/text/__init__.py","workers/stars/vendor_stars/utils/text/text_encoder.py","workers/structure/README.md","workers/structure/requirements_structure.txt","workers/structure/run_structure.py","workers/structure/vendor/wav2vec2-conformer-rope-large-960h-ft.config.json","曲库/library.latest.json"],"removed":[],"modified":[]},"repository":{"id":60,"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":"haizan-ai-production-platform","full_name":"luoanwu/haizan-ai-production-platform","description":"嗨赞AI制作平台:音频分离、歌曲结构分析与歌词精对齐生产工作台","empty":false,"private":true,"fork":false,"template":false,"mirror":false,"size":27,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/haizan-ai-production-platform/languages","html_url":"https://gitea.g-hi.com/luoanwu/haizan-ai-production-platform","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/haizan-ai-production-platform","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/haizan-ai-production-platform.git","clone_url":"https://gitea.g-hi.com/luoanwu/haizan-ai-production-platform.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-07-14T12:25:49+08:00","updated_at":"2026-07-14T12:26: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
|
6
|
1784003176
|
1784003267
|
0
|
1784003175
|
1784003269
|
group: governance-${{ github.workflow }}-${{ githu group: governance-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: "true"
...
|
governance-governance.yml-refs/heads/main
|
1
|
Edit
Delete
|
|
23416
|
C64d:测试数解析先剥 ANSI 色码(CI 强制彩色输出致正则失配)
|
60
|
5
|
governance.yml
|
6
|
5
|
0
|
refs/heads/main
|
262802ed1be2f708784260d2fd49e110a9c365f9
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"2358c119b985d2797496bd76d8683556005f5998","after":"262802ed1be2f708784260d2fd49e110a9c365f9","compare_url":"https://gitea.g-hi.com/luoanwu/haizan-ai-production-platform/compare/2358c119b985d2797496bd76d8683556005f5998...262802ed1be2f708784260d2fd49e110a9c365f9","commits":[{"id":"262802ed1be2f708784260d2fd49e110a9c365f9","message":"C64d:测试数解析先剥 ANSI 色码(CI 强制彩色输出致正则失配)\n\nCI 判责输出(C64c 新增)直接暴露根因:turbo/vitest 在 CI 上强制彩色,\n「Tests ⎋[1m⎋[32m95 passed」的转义序列夹在关键词与数字之间使\n/Tests\\s+(\\d+)\\s+passed/ 失配、汇总恒 0;本机非 TTY 无色码故从未复现。\n解析前剥 \\x1b[..m 序列,彩色/无色输入均验证正确;本机 316/316 回归通过。\n\nCo-Authored-By: Claude Fable 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/haizan-ai-production-platform/commit/262802ed1be2f708784260d2fd49e110a9c365f9","author":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"verification":null,"timestamp":"2026-07-13T23:39:54-07:00","added":[],"removed":[],"modified":["reports/runtime-acceptance.latest.json","scripts/check-runtime-acceptance.mjs"]}],"total_commits":0,"head_commit":{"id":"262802ed1be2f708784260d2fd49e110a9c365f9","message":"C64d:测试数解析先剥 ANSI 色码(CI 强制彩色输出致正则失配)\n\nCI 判责输出(C64c 新增)直接暴露根因:turbo/vitest 在 CI 上强制彩色,\n「Tests ⎋[1m⎋[32m95 passed」的转义序列夹在关键词与数字之间使\n/Tests\\s+(\\d+)\\s+passed/ 失配、汇总恒 0;本机非 TTY 无色码故从未复现。\n解析前剥 \\x1b[..m 序列,彩色/无色输入均验证正确;本机 316/316 回归通过。\n\nCo-Authored-By: Claude Fable 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/haizan-ai-production-platform/commit/262802ed1be2f708784260d2fd49e110a9c365f9","author":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"verification":null,"timestamp":"2026-07-13T23:39:54-07:00","added":[],"removed":[],"modified":["reports/runtime-acceptance.latest.json","scripts/check-runtime-acceptance.mjs"]},"repository":{"id":60,"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":"haizan-ai-production-platform","full_name":"luoanwu/haizan-ai-production-platform","description":"嗨赞AI制作平台:音频分离、歌曲结构分析与歌词精对齐生产工作台","empty":false,"private":true,"fork":false,"template":false,"mirror":false,"size":3851,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/haizan-ai-production-platform/languages","html_url":"https://gitea.g-hi.com/luoanwu/haizan-ai-production-platform","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/haizan-ai-production-platform","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/haizan-ai-production-platform.git","clone_url":"https://gitea.g-hi.com/luoanwu/haizan-ai-production-platform.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-07-14T12:25:49+08:00","updated_at":"2026-07-14T14:32: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
|
2
|
6
|
1784011490
|
1784011581
|
0
|
1784011200
|
1784011582
|
group: governance-${{ github.workflow }}-${{ githu group: governance-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: "true"
...
|
governance-governance.yml-refs/heads/main
|
1
|
Edit
Delete
|
|
23422
|
真值 v2 登记与全链复评:晴天人工听感纠正2(69→73 行全覆盖)
|
60
|
5
|
governance.yml
|
11
|
5
|
0
|
refs/heads/main
|
226033fd7f9e6266a679a585a26dfb935d56b1e2
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"05d910e9c48177e24723827b424c2f8919bde17d","after":"226033fd7f9e6266a679a585a26dfb935d56b1e2","compare_url":"https://gitea.g-hi.com/luoanwu/haizan-ai-production-platform/compare/05d910e9c48177e24723827b424c2f8919bde17d...226033fd7f9e6266a679a585a26dfb935d56b1e2","commits":[{"id":"226033fd7f9e6266a679a585a26dfb935d56b1e2","message":"真值 v2 登记与全链复评:晴天人工听感纠正2(69→73 行全覆盖)\n\n- 用户提供的人工听感纠正 v2 登记进曲库 assets(check:library 绿);\n 补齐 v1 缺失的 4 行真值 + 12 行几十毫秒级精修\n- 全链复评(73/73 覆盖):拼接链行级 median 181/p90 531/≤500ms 89.0%,\n 切片基线 189/750/74.0%——C61 优势保持;SOFA 推算 median 64ms、\n 逐行判胜 41:21——根因分析结论(HubertFA 歌唱边界质量为主因)在\n 精修真值下全部稳定,排除真值口径伪影\n- 证据 reports/model-evidence/qingtian-precision-truth-v2.latest.json\n\nCo-Authored-By: Claude Fable 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/haizan-ai-production-platform/commit/226033fd7f9e6266a679a585a26dfb935d56b1e2","author":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"verification":null,"timestamp":"2026-07-14T03:48:35-07:00","added":["reports/model-evidence/qingtian-precision-truth-v2.latest.json"],"removed":[],"modified":["曲库/library.latest.json"]}],"total_commits":0,"head_commit":{"id":"226033fd7f9e6266a679a585a26dfb935d56b1e2","message":"真值 v2 登记与全链复评:晴天人工听感纠正2(69→73 行全覆盖)\n\n- 用户提供的人工听感纠正 v2 登记进曲库 assets(check:library 绿);\n 补齐 v1 缺失的 4 行真值 + 12 行几十毫秒级精修\n- 全链复评(73/73 覆盖):拼接链行级 median 181/p90 531/≤500ms 89.0%,\n 切片基线 189/750/74.0%——C61 优势保持;SOFA 推算 median 64ms、\n 逐行判胜 41:21——根因分析结论(HubertFA 歌唱边界质量为主因)在\n 精修真值下全部稳定,排除真值口径伪影\n- 证据 reports/model-evidence/qingtian-precision-truth-v2.latest.json\n\nCo-Authored-By: Claude Fable 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/haizan-ai-production-platform/commit/226033fd7f9e6266a679a585a26dfb935d56b1e2","author":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"verification":null,"timestamp":"2026-07-14T03:48:35-07:00","added":["reports/model-evidence/qingtian-precision-truth-v2.latest.json"],"removed":[],"modified":["曲库/library.latest.json"]},"repository":{"id":60,"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":"haizan-ai-production-platform","full_name":"luoanwu/haizan-ai-production-platform","description":"嗨赞AI制作平台:音频分离、歌曲结构分析与歌词精对齐生产工作台","empty":false,"private":true,"fork":false,"template":false,"mirror":false,"size":4057,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/haizan-ai-production-platform/languages","html_url":"https://gitea.g-hi.com/luoanwu/haizan-ai-production-platform","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/haizan-ai-production-platform","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/haizan-ai-production-platform.git","clone_url":"https://gitea.g-hi.com/luoanwu/haizan-ai-production-platform.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-07-14T12:25:49+08:00","updated_at":"2026-07-14T15:16: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
|
2
|
6
|
1784026122
|
1784026213
|
0
|
1784026121
|
1784026213
|
group: governance-${{ github.workflow }}-${{ githu group: governance-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: "true"
...
|
governance-governance.yml-refs/heads/main
|
1
|
Edit
Delete
|