|
23459
|
feat(governance): harden report provenance and UI feat(governance): harden report provenance and UI acceptance...
|
54
|
5
|
governance.yml
|
6
|
5
|
0
|
refs/heads/main
|
da8f52db37f5b42d035f92ad27a45067bc57dfa9
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"02a656716b10d2a5a4937ba01086cbd0a9ff4b85","after":"da8f52db37f5b42d035f92ad27a45067bc57dfa9","compare_url":"https://gitea.g-hi.com/luoanwu/base-framework/compare/02a656716b10d2a5a4937ba01086cbd0a9ff4b85...da8f52db37f5b42d035f92ad27a45067bc57dfa9","commits":[{"id":"da8f52db37f5b42d035f92ad27a45067bc57dfa9","message":"feat(governance): harden report provenance and UI acceptance\n","url":"https://gitea.g-hi.com/luoanwu/base-framework/commit/da8f52db37f5b42d035f92ad27a45067bc57dfa9","author":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"verification":null,"timestamp":"2026-07-30T07:40:06-07:00","added":["scripts/lib/report-provenance.mjs"],"removed":[],"modified":["CLAUDE.md","README.md","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/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"]},{"id":"4940be24ba6bfff2eefb2284f8ce66c9cbd1f326","message":"docs(governance): record remote branch consolidation\n","url":"https://gitea.g-hi.com/luoanwu/base-framework/commit/4940be24ba6bfff2eefb2284f8ce66c9cbd1f326","author":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"verification":null,"timestamp":"2026-07-22T01:35:33-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-governance.latest.json","reports/schema-sync.latest.json","reports/validation-source.latest.json"]}],"total_commits":0,"head_commit":{"id":"da8f52db37f5b42d035f92ad27a45067bc57dfa9","message":"feat(governance): harden report provenance and UI acceptance\n","url":"https://gitea.g-hi.com/luoanwu/base-framework/commit/da8f52db37f5b42d035f92ad27a45067bc57dfa9","author":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"verification":null,"timestamp":"2026-07-30T07:40:06-07:00","added":["scripts/lib/report-provenance.mjs"],"removed":[],"modified":["CLAUDE.md","README.md","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/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"]},"repository":{"id":54,"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":"base-framework","full_name":"luoanwu/base-framework","description":"基础框架 monorepo","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":890,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/base-framework/languages","html_url":"https://gitea.g-hi.com/luoanwu/base-framework","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/base-framework","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/base-framework.git","clone_url":"https://gitea.g-hi.com/luoanwu/base-framework.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-03T12:24:18+08:00","updated_at":"2026-07-22T16:35:10+08:00","archived_at":"1970-01-01T08:00:00+08:00","permissions":{"admin":true,"push":true,"pull":true},"has_code":true,"has_issues":true,"internal_tracker":{"enable_time_tracker":true,"allow_only_contributors_to_track_time":true,"enable_issue_dependencies":true},"has_wiki":true,"has_pull_requests":true,"has_projects":true,"projects_mode":"all","has_releases":true,"has_packages":true,"has_actions":true,"ignore_whitespace_conflicts":false,"allow_merge_commits":true,"allow_rebase":true,"allow_rebase_explicit":true,"allow_squash_merge":true,"allow_fast_forward_only_merge":true,"allow_rebase_update":true,"allow_manual_merge":false,"autodetect_manual_merge":false,"default_delete_branch_after_merge":false,"default_merge_style":"merge","default_allow_maintainer_edit":true,"avatar_url":"","internal":false,"mirror_interval":"","object_format_name":"sha1","mirror_updated":"0001-01-01T00:00:00Z","topics":[],"licenses":[]},"pusher":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"sender":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"}}...
|
push
|
2
|
8
|
1785422435
|
1785422492
|
0
|
1785422433
|
1785422492
|
group: governance-${{ github.workflow }}-${{ githu group: governance-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: "true"
...
|
governance-governance.yml-refs/heads/main
|
1
|
Edit
Delete
|
|
23460
|
docs(governance): record Gitea publish baseline
|
54
|
5
|
governance.yml
|
7
|
5
|
0
|
refs/heads/main
|
94e3f1b529034c902d205637ed69033238b5b594
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"da8f52db37f5b42d035f92ad27a45067bc57dfa9","after":"94e3f1b529034c902d205637ed69033238b5b594","compare_url":"https://gitea.g-hi.com/luoanwu/base-framework/compare/da8f52db37f5b42d035f92ad27a45067bc57dfa9...94e3f1b529034c902d205637ed69033238b5b594","commits":[{"id":"94e3f1b529034c902d205637ed69033238b5b594","message":"docs(governance): record Gitea publish baseline\n","url":"https://gitea.g-hi.com/luoanwu/base-framework/commit/94e3f1b529034c902d205637ed69033238b5b594","author":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"verification":null,"timestamp":"2026-07-30T07:41:37-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-governance.latest.json","reports/schema-sync.latest.json","reports/validation-source.latest.json"]}],"total_commits":0,"head_commit":{"id":"94e3f1b529034c902d205637ed69033238b5b594","message":"docs(governance): record Gitea publish baseline\n","url":"https://gitea.g-hi.com/luoanwu/base-framework/commit/94e3f1b529034c902d205637ed69033238b5b594","author":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"verification":null,"timestamp":"2026-07-30T07:41:37-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-governance.latest.json","reports/schema-sync.latest.json","reports/validation-source.latest.json"]},"repository":{"id":54,"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":"base-framework","full_name":"luoanwu/base-framework","description":"基础框架 monorepo","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":995,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/base-framework/languages","html_url":"https://gitea.g-hi.com/luoanwu/base-framework","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/base-framework","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/base-framework.git","clone_url":"https://gitea.g-hi.com/luoanwu/base-framework.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-03T12:24:18+08:00","updated_at":"2026-07-30T22:40: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
|
8
|
1785422514
|
1785422567
|
0
|
1785422513
|
1785422567
|
group: governance-${{ github.workflow }}-${{ githu group: governance-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: "true"
...
|
governance-governance.yml-refs/heads/main
|
1
|
Edit
Delete
|
|
23461
|
chore(reports): refresh clean publish evidence
|
54
|
5
|
governance.yml
|
8
|
5
|
0
|
refs/heads/main
|
03ef2eb6d9d8f94868d95821c22f3c23f7dc7f38
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"94e3f1b529034c902d205637ed69033238b5b594","after":"03ef2eb6d9d8f94868d95821c22f3c23f7dc7f38","compare_url":"https://gitea.g-hi.com/luoanwu/base-framework/compare/94e3f1b529034c902d205637ed69033238b5b594...03ef2eb6d9d8f94868d95821c22f3c23f7dc7f38","commits":[{"id":"03ef2eb6d9d8f94868d95821c22f3c23f7dc7f38","message":"chore(reports): refresh clean publish evidence\n","url":"https://gitea.g-hi.com/luoanwu/base-framework/commit/03ef2eb6d9d8f94868d95821c22f3c23f7dc7f38","author":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"verification":null,"timestamp":"2026-07-30T07:43:05-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"]}],"total_commits":0,"head_commit":{"id":"03ef2eb6d9d8f94868d95821c22f3c23f7dc7f38","message":"chore(reports): refresh clean publish evidence\n","url":"https://gitea.g-hi.com/luoanwu/base-framework/commit/03ef2eb6d9d8f94868d95821c22f3c23f7dc7f38","author":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"verification":null,"timestamp":"2026-07-30T07:43:05-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":54,"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":"base-framework","full_name":"luoanwu/base-framework","description":"基础框架 monorepo","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":1019,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/base-framework/languages","html_url":"https://gitea.g-hi.com/luoanwu/base-framework","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/base-framework","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/base-framework.git","clone_url":"https://gitea.g-hi.com/luoanwu/base-framework.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-03T12:24:18+08:00","updated_at":"2026-07-30T22:41:53+08:00","archived_at":"1970-01-01T08:00:00+08:00","permissions":{"admin":true,"push":true,"pull":true},"has_code":true,"has_issues":true,"internal_tracker":{"enable_time_tracker":true,"allow_only_contributors_to_track_time":true,"enable_issue_dependencies":true},"has_wiki":true,"has_pull_requests":true,"has_projects":true,"projects_mode":"all","has_releases":true,"has_packages":true,"has_actions":true,"ignore_whitespace_conflicts":false,"allow_merge_commits":true,"allow_rebase":true,"allow_rebase_explicit":true,"allow_squash_merge":true,"allow_fast_forward_only_merge":true,"allow_rebase_update":true,"allow_manual_merge":false,"autodetect_manual_merge":false,"default_delete_branch_after_merge":false,"default_merge_style":"merge","default_allow_maintainer_edit":true,"avatar_url":"","internal":false,"mirror_interval":"","object_format_name":"sha1","mirror_updated":"0001-01-01T00:00:00Z","topics":[],"licenses":[]},"pusher":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"sender":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"}}...
|
push
|
2
|
8
|
1785422601
|
1785422655
|
0
|
1785422600
|
1785422655
|
group: governance-${{ github.workflow }}-${{ githu group: governance-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: "true"
...
|
governance-governance.yml-refs/heads/main
|
1
|
Edit
Delete
|
|
23497
|
chore(reports): refresh clean publish evidence for chore(reports): refresh clean publish evidence for realtime work...
|
54
|
5
|
governance.yml
|
9
|
5
|
0
|
refs/heads/main
|
4d95adb2ebe583e4dddbd233cbb4ffb574b17862
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"03ef2eb6d9d8f94868d95821c22f3c23f7dc7f38","after":"4d95adb2ebe583e4dddbd233cbb4ffb574b17862","compare_url":"https://gitea.g-hi.com/luoanwu/base-framework/compare/03ef2eb6d9d8f94868d95821c22f3c23f7dc7f38...4d95adb2ebe583e4dddbd233cbb4ffb574b17862","commits":[{"id":"4d95adb2ebe583e4dddbd233cbb4ffb574b17862","message":"chore(reports): refresh clean publish evidence for realtime work\n\n三级门禁在 clean commit c223f35 上重跑,所有 reports/*.latest.json 的\nprovenance 记为 gitSha=c223f35 / worktreeDirty=false——证据自此绑定具体\n提交,而非「某次本地 dirty 运行」。\n\nCLAUDE.md 证据新鲜度同步改为绑定该提交,并显式声明这只证明「该提交在\n本机通过三级门禁」,推不出远端 CI 已拦截或已部署(G14 仍 OPEN)。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/base-framework/commit/4d95adb2ebe583e4dddbd233cbb4ffb574b17862","author":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"verification":null,"timestamp":"2026-08-19T04:35:15-07:00","added":[],"removed":[],"modified":["CLAUDE.md","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"]},{"id":"c223f35e380114edfe1331619928f405cf77eee2","message":"feat(realtime): 可靠投递 + 定向推送 + 双向控制帧 + 连接可观测\n\n把实时通讯从单向广播推进到「可靠 + 定向 + 双向 + 可观测」四块,\n两后端对等实现,判定逻辑统一收敛到 @repo/contracts 单源。\n\nA 可靠投递闭环(G16 主体闭环)\n- 信封加 id(= outbox 行 id,稳定幂等键)与 seq(自增重放游标);\n 前端去重从内容指纹改为 envelope.id——指纹依赖「重投时 ts 不变」\n 这个不成立的假设,补发路径上必然误判。\n- dispatcher 改 SELECT ... FOR UPDATE SKIP LOCKED 领取,publish 在同一\n 事务内完成;先提交再 publish 会从 at-least-once 退化成 at-most-once。\n- 断线重放:SSE 走标准 Last-Event-ID,WS 走 ?since=;补不齐时回\n replay.gap 让客户端全量重取,绝不静默截断。\n- 新增 outbox.seq 迁移(显式建序列,DEFAULT 在 SQL 里可见)。\n\nB 定向推送(订阅过滤)\n- matchesSubscription / parseSubscription 单源在 contracts;\n types 前缀 + ids 维度,未声明 = 收本租户全部。\n- 定位是租户内的带宽减法,不是权限边界;租户隔离仍是唯一安全边界。\n- ping / replay.gap / connection.* 为连接级消息,无视订阅条件必送。\n\nC 双向通讯(刻意限定为连接控制平面)\n- WS 接受 subscribe / ping 控制帧,应答 connection.ack / connection.error。\n- 红线:控制帧不承载任何业务写入。HTTP 写链上挂着 Zod、状态机守卫、\n 租户绑定、outbox 同事务(P4 四同边界),WS 若能写业务,要么重实现\n 一遍那套保证(P1 双真源),要么绕过(写链治理失守)。\n- 三道闸按成本排序:限流 → 大小/解析 → 应用。\n\nD 连接可观测与背压\n- GET /api/realtime/stats 按请求方租户收口:租户只从鉴权上下文取,\n 不接受 ?tenantId= 覆盖,也不返回全局/分租户明细。\n- 单租户连接上限背压:超限 WS 回 1013、SSE 回 429;被拒连接不登记计数。\n\n验收(本地工作区,PG:55432 + Redis:6382)\n- pnpm check 全绿;pnpm check:runtime 155 tests / 0 failures;\n pnpm check:ui 4 用例 / 0 失败。\n- 棘轮收紧:ownTests 11→24、ownTestCases 60→146、testsPassed 56→155。\n- 负向测试已验证有牙:退回裸 findMany → 20 行被投递 40 次;摘掉订阅\n 过滤 → types/ids 断言红;stats 接受调用方指定租户 → 越权探测红。\n\n治理回灌:CLAUDE.md 真源地图新增 5 条实时口径、基线表新增 5 行指标、\nG16 改为「部分闭环」并列明仍缺的死信告警与多实例端到端验收;\n战役叙事外迁 docs/governance-experience.md。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/base-framework/commit/c223f35e380114edfe1331619928f405cf77eee2","author":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"verification":null,"timestamp":"2026-08-19T04:33:54-07:00","added":["apps/api-fastify/prisma/migrations/20260818090000_outbox_replay_cursor/migration.sql","apps/api-fastify/src/modules/replay.ts","apps/api-fastify/src/routes/realtime-stats.ts","apps/api-fastify/test/outbox.concurrency.test.ts","apps/api-fastify/test/realtime.command.test.ts","apps/api-fastify/test/realtime.replay.test.ts","apps/api-fastify/test/realtime.stats.test.ts","apps/api-fastify/test/realtime.subscription.test.ts","apps/api-nestjs/prisma/migrations/20260818090000_outbox_replay_cursor/migration.sql","apps/api-nestjs/src/events/connection-registry.service.ts","apps/api-nestjs/src/events/realtime-stats.controller.ts","apps/api-nestjs/src/events/replay.service.ts","apps/api-nestjs/test/outbox.concurrency.test.ts","apps/api-nestjs/test/realtime.command.test.ts","apps/api-nestjs/test/realtime.replay.test.ts","apps/api-nestjs/test/realtime.stats.test.ts","apps/api-nestjs/test/realtime.subscription.test.ts","docs/migration-playbook.md","governance.registry.json","governance.registry.schema.json","packages/contracts/src/job.ts","packages/contracts/src/realtime-command.test.ts","packages/contracts/src/realtime-command.ts","packages/contracts/src/realtime-stats.ts","packages/contracts/src/replay.test.ts","packages/contracts/src/replay.ts","packages/contracts/src/subscription.test.ts","packages/contracts/src/subscription.ts","reports/fork-readiness.latest.json","reports/statemachine-write-guard.latest.json","scripts/check-fork-readiness.mjs","scripts/check-statemachine-write-guard.mjs"],"removed":["reports/order-concurrency-guard.latest.json","scripts/check-order-concurrency-guard.mjs"],"modified":["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/plugins/events.ts","apps/api-fastify/src/plugins/outbox.ts","apps/api-fastify/src/routes/sse.ts","apps/api-fastify/src/routes/ws.ts","apps/api-nestjs/prisma/schema.prisma","apps/api-nestjs/src/events/events.gateway.ts","apps/api-nestjs/src/events/events.module.ts","apps/api-nestjs/src/events/outbox-dispatcher.service.ts","apps/api-nestjs/src/sse/sse.controller.ts","apps/web/src/components/EventFeed.tsx","apps/web/src/hooks/useRealtime.ts","apps/web/src/store/realtime.ts","docs/README.md","docs/domain-glossary.md","docs/governance-experience.md","package.json","packages/contracts/src/index.ts","packages/contracts/src/order.ts","packages/contracts/src/realtime.ts","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/naming.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-migrations.mjs","scripts/check-naming.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"]}],"total_commits":0,"head_commit":{"id":"4d95adb2ebe583e4dddbd233cbb4ffb574b17862","message":"chore(reports): refresh clean publish evidence for realtime work\n\n三级门禁在 clean commit c223f35 上重跑,所有 reports/*.latest.json 的\nprovenance 记为 gitSha=c223f35 / worktreeDirty=false——证据自此绑定具体\n提交,而非「某次本地 dirty 运行」。\n\nCLAUDE.md 证据新鲜度同步改为绑定该提交,并显式声明这只证明「该提交在\n本机通过三级门禁」,推不出远端 CI 已拦截或已部署(G14 仍 OPEN)。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/base-framework/commit/4d95adb2ebe583e4dddbd233cbb4ffb574b17862","author":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"verification":null,"timestamp":"2026-08-19T04:35:15-07:00","added":[],"removed":[],"modified":["CLAUDE.md","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"]},"repository":{"id":54,"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":"base-framework","full_name":"luoanwu/base-framework","description":"基础框架 monorepo","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":1028,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/base-framework/languages","html_url":"https://gitea.g-hi.com/luoanwu/base-framework","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/base-framework","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/base-framework.git","clone_url":"https://gitea.g-hi.com/luoanwu/base-framework.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-03T12:24:18+08:00","updated_at":"2026-07-30T22:43: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
|
6
|
1787139337
|
1787139361
|
0
|
1787139335
|
1787139361
|
group: governance-${{ github.workflow }}-${{ githu group: governance-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: "true"
...
|
governance-governance.yml-refs/heads/main
|
1
|
Edit
Delete
|
|
23498
|
docs(migration): 回灌 P9——文档内部数字自相矛盾
|
54
|
5
|
governance.yml
|
10
|
5
|
0
|
refs/heads/main
|
ccbc413eaf556c59a5c14707ce87d264c050180f
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"4d95adb2ebe583e4dddbd233cbb4ffb574b17862","after":"ccbc413eaf556c59a5c14707ce87d264c050180f","compare_url":"https://gitea.g-hi.com/luoanwu/base-framework/compare/4d95adb2ebe583e4dddbd233cbb4ffb574b17862...ccbc413eaf556c59a5c14707ce87d264c050180f","commits":[{"id":"ccbc413eaf556c59a5c14707ce87d264c050180f","message":"docs(migration): 回灌 P9——文档内部数字自相矛盾\n\n下游 Digital Employee OS 移植时实测:只改了 CLAUDE.md 的「证据新鲜度」块\n(49 tests),漏了下方 GOVERNANCE-BASELINE 表(仍是源仓的 11/60/56),\n同一份文件里两个数字互相矛盾,而三级门禁全绿。\n\ncheck:docs-truth 是 targeted 断言集,不覆盖数字类事实,抓不到这类漂移。\n数字矛盾比数字过时更险:过时只是陈旧,矛盾意味着至少有一个是编的,\n而读者无从判断是哪个。\n\n按 §5 回灌纪律(「换个移植目标还会再踩吗」→ 会 → 回灌上游),三处同步补齐:\n- 踩坑档案新增 P9\n- 步骤 8 显式点名 GOVERNANCE-BASELINE 表每个数字与发布状态快照,\n 并加警告说明 check:docs-truth 的覆盖边界\n- 验收标准把「证据日期」扩为「证据日期 + 基线表每个数字」\n\n暂未机器化:数字类断言仍靠人工核对,属手册明记的已知缺口。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/base-framework/commit/ccbc413eaf556c59a5c14707ce87d264c050180f","author":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"verification":null,"timestamp":"2026-08-19T05:10:13-07:00","added":[],"removed":[],"modified":["docs/migration-playbook.md","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-governance.latest.json","reports/schema-sync.latest.json","reports/statemachine-write-guard.latest.json","reports/validation-source.latest.json"]}],"total_commits":0,"head_commit":{"id":"ccbc413eaf556c59a5c14707ce87d264c050180f","message":"docs(migration): 回灌 P9——文档内部数字自相矛盾\n\n下游 Digital Employee OS 移植时实测:只改了 CLAUDE.md 的「证据新鲜度」块\n(49 tests),漏了下方 GOVERNANCE-BASELINE 表(仍是源仓的 11/60/56),\n同一份文件里两个数字互相矛盾,而三级门禁全绿。\n\ncheck:docs-truth 是 targeted 断言集,不覆盖数字类事实,抓不到这类漂移。\n数字矛盾比数字过时更险:过时只是陈旧,矛盾意味着至少有一个是编的,\n而读者无从判断是哪个。\n\n按 §5 回灌纪律(「换个移植目标还会再踩吗」→ 会 → 回灌上游),三处同步补齐:\n- 踩坑档案新增 P9\n- 步骤 8 显式点名 GOVERNANCE-BASELINE 表每个数字与发布状态快照,\n 并加警告说明 check:docs-truth 的覆盖边界\n- 验收标准把「证据日期」扩为「证据日期 + 基线表每个数字」\n\n暂未机器化:数字类断言仍靠人工核对,属手册明记的已知缺口。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/base-framework/commit/ccbc413eaf556c59a5c14707ce87d264c050180f","author":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"verification":null,"timestamp":"2026-08-19T05:10:13-07:00","added":[],"removed":[],"modified":["docs/migration-playbook.md","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-governance.latest.json","reports/schema-sync.latest.json","reports/statemachine-write-guard.latest.json","reports/validation-source.latest.json"]},"repository":{"id":54,"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":"base-framework","full_name":"luoanwu/base-framework","description":"基础框架 monorepo","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":1362,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/base-framework/languages","html_url":"https://gitea.g-hi.com/luoanwu/base-framework","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/base-framework","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/base-framework.git","clone_url":"https://gitea.g-hi.com/luoanwu/base-framework.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-03T12:24:18+08:00","updated_at":"2026-08-19T19:35:35+08:00","archived_at":"1970-01-01T08:00:00+08:00","permissions":{"admin":true,"push":true,"pull":true},"has_code":true,"has_issues":true,"internal_tracker":{"enable_time_tracker":true,"allow_only_contributors_to_track_time":true,"enable_issue_dependencies":true},"has_wiki":true,"has_pull_requests":true,"has_projects":true,"projects_mode":"all","has_releases":true,"has_packages":true,"has_actions":true,"ignore_whitespace_conflicts":false,"allow_merge_commits":true,"allow_rebase":true,"allow_rebase_explicit":true,"allow_squash_merge":true,"allow_fast_forward_only_merge":true,"allow_rebase_update":true,"allow_manual_merge":false,"autodetect_manual_merge":false,"default_delete_branch_after_merge":false,"default_merge_style":"merge","default_allow_maintainer_edit":true,"avatar_url":"","internal":false,"mirror_interval":"","object_format_name":"sha1","mirror_updated":"0001-01-01T00:00:00Z","topics":[],"licenses":[]},"pusher":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"sender":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"}}...
|
push
|
2
|
6
|
1787141425
|
1787141444
|
0
|
1787141425
|
1787141445
|
group: governance-${{ github.workflow }}-${{ githu group: governance-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: "true"
...
|
governance-governance.yml-refs/heads/main
|
1
|
Edit
Delete
|
|
23499
|
chore(reports): 刷新静态门禁证据至 e15fa81
|
54
|
5
|
governance.yml
|
11
|
5
|
0
|
refs/heads/main
|
9513a941af257b779d7d2c095dff71172edcefaf
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"ccbc413eaf556c59a5c14707ce87d264c050180f","after":"9513a941af257b779d7d2c095dff71172edcefaf","compare_url":"https://gitea.g-hi.com/luoanwu/base-framework/compare/ccbc413eaf556c59a5c14707ce87d264c050180f...9513a941af257b779d7d2c095dff71172edcefaf","commits":[{"id":"9513a941af257b779d7d2c095dff71172edcefaf","message":"chore(reports): 刷新静态门禁证据至 e15fa81\n\nCLAUDE.md 改动后静态子报告的 provenance 仍指向 ccbc413,与当前 checkout\n不一致(report-provenance 门禁会红)。在 clean commit 上重跑 pnpm check,\n14 份静态报告统一记为 gitSha=e15fa81 / worktreeDirty=false。\n\nruntime/ui 报告未重跑:本轮为纯文档改动,未触碰任何被它们覆盖的代码,\n其证据仍诚实绑定 c223f35 的实跑,不做无意义刷新。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/base-framework/commit/9513a941af257b779d7d2c095dff71172edcefaf","author":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"verification":null,"timestamp":"2026-08-19T08:53:15-07:00","added":[],"removed":[],"modified":["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-governance.latest.json","reports/schema-sync.latest.json","reports/statemachine-write-guard.latest.json","reports/validation-source.latest.json"]},{"id":"e15fa814108637f2484a5be50900fd35a0f05d9d","message":"docs(claude): 补齐常用命令与运行时拓扑,收敛验证命令双源\n\n对照 /init 的两条标准补齐本文件的实际缺口,治理正文一字未动(纯增量)。\n\n1) 新增「常用命令」小节\n原先只有文件最末尾一个块(install / generate / 三级门禁),缺三类信息:\n- 开发入口与端口(web:3000 / NestJS:3001 / Fastify:3002)\n- 单个测试怎么跑(单文件 / -t 按用例名 / watch)\n- 13 个 check:* 子门禁只写了聚合入口,未说明可单独执行\n同时记入两条本机实证的判责提示:\n- pnpm 锁定 9.15.9,被 pnpm 10 装过会写 store v11,须全量重装 + prisma:generate\n- G15 基座守卫只校验库名前缀、**不校验端口**,故「端口连得上」推不出\n 「基座正确」(2026-08-19 在下游 Digital Employee OS 实际踩到:误用上游\n 容器 PG:55432/Redis:6382 通过守卫,共用 Redis 导致两次时序偶发红)\n\n2) 新增「运行时拓扑」小节\n「真源地图」回答的是「哪份文件说了算」,不回答「请求怎么流」。补一条从\nHTTP 写请求到前端缓存失效的完整事件通路,以及两条读单个文件发现不了的约定:\nNestJS 全局前缀 /api 但 GET /sse/events 被 exclude;WS 用原生 ws 而非\nsocket.io,故协议与 Fastify 侧兼容。\n\n3) 收敛验证命令双源\n文末旧「验证命令」块与新章节重复——同一事实两处维护正是 P1 禁止的漂移温床。\n改为指回顶部,只保留各级门禁的覆盖范围差异(含 check:ui 不覆盖 Fastify\n链路这条 G17 事实)。\n\nAGENTS.md 符号链接完好,check:governance-docs / check:docs-truth 均绿。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/base-framework/commit/e15fa814108637f2484a5be50900fd35a0f05d9d","author":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"verification":null,"timestamp":"2026-08-19T08:52:41-07:00","added":[],"removed":[],"modified":["CLAUDE.md"]}],"total_commits":0,"head_commit":{"id":"9513a941af257b779d7d2c095dff71172edcefaf","message":"chore(reports): 刷新静态门禁证据至 e15fa81\n\nCLAUDE.md 改动后静态子报告的 provenance 仍指向 ccbc413,与当前 checkout\n不一致(report-provenance 门禁会红)。在 clean commit 上重跑 pnpm check,\n14 份静态报告统一记为 gitSha=e15fa81 / worktreeDirty=false。\n\nruntime/ui 报告未重跑:本轮为纯文档改动,未触碰任何被它们覆盖的代码,\n其证据仍诚实绑定 c223f35 的实跑,不做无意义刷新。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/base-framework/commit/9513a941af257b779d7d2c095dff71172edcefaf","author":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"verification":null,"timestamp":"2026-08-19T08:53:15-07:00","added":[],"removed":[],"modified":["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-governance.latest.json","reports/schema-sync.latest.json","reports/statemachine-write-guard.latest.json","reports/validation-source.latest.json"]},"repository":{"id":54,"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":"base-framework","full_name":"luoanwu/base-framework","description":"基础框架 monorepo","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":1375,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/base-framework/languages","html_url":"https://gitea.g-hi.com/luoanwu/base-framework","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/base-framework","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/base-framework.git","clone_url":"https://gitea.g-hi.com/luoanwu/base-framework.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-03T12:24:18+08:00","updated_at":"2026-08-19T20:10:25+08:00","archived_at":"1970-01-01T08:00:00+08:00","permissions":{"admin":true,"push":true,"pull":true},"has_code":true,"has_issues":true,"internal_tracker":{"enable_time_tracker":true,"allow_only_contributors_to_track_time":true,"enable_issue_dependencies":true},"has_wiki":true,"has_pull_requests":true,"has_projects":true,"projects_mode":"all","has_releases":true,"has_packages":true,"has_actions":true,"ignore_whitespace_conflicts":false,"allow_merge_commits":true,"allow_rebase":true,"allow_rebase_explicit":true,"allow_squash_merge":true,"allow_fast_forward_only_merge":true,"allow_rebase_update":true,"allow_manual_merge":false,"autodetect_manual_merge":false,"default_delete_branch_after_merge":false,"default_merge_style":"merge","default_allow_maintainer_edit":true,"avatar_url":"","internal":false,"mirror_interval":"","object_format_name":"sha1","mirror_updated":"0001-01-01T00:00:00Z","topics":[],"licenses":[]},"pusher":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"sender":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"}}...
|
push
|
2
|
6
|
1787154808
|
1787154828
|
0
|
1787154807
|
1787154829
|
group: governance-${{ github.workflow }}-${{ githu group: governance-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: "true"
...
|
governance-governance.yml-refs/heads/main
|
1
|
Edit
Delete
|
|
23536
|
chore(reports): 刷新 OS 产品验收证据
|
54
|
5
|
governance.yml
|
12
|
5
|
0
|
refs/heads/main
|
53991090b821b76dff11eee3a2e92806ed3ab173
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"9513a941af257b779d7d2c095dff71172edcefaf","after":"53991090b821b76dff11eee3a2e92806ed3ab173","compare_url":"https://gitea.g-hi.com/luoanwu/base-framework/compare/9513a941af257b779d7d2c095dff71172edcefaf...53991090b821b76dff11eee3a2e92806ed3ab173","commits":[{"id":"53991090b821b76dff11eee3a2e92806ed3ab173","message":"chore(reports): 刷新 OS 产品验收证据\n","url":"https://gitea.g-hi.com/luoanwu/base-framework/commit/53991090b821b76dff11eee3a2e92806ed3ab173","author":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"verification":null,"timestamp":"2026-08-26T16:22:27-07:00","added":["reports/os-product-compat.latest.json","reports/os-product-runtime.latest.json"],"removed":[],"modified":["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-governance.latest.json","reports/schema-sync.latest.json","reports/statemachine-write-guard.latest.json","reports/validation-source.latest.json"]},{"id":"71e6ef64d1ee41cb39ffae15a73f049c42fb82b1","message":"feat(os): 增加可装载基础框架产品\n","url":"https://gitea.g-hi.com/luoanwu/base-framework/commit/71e6ef64d1ee41cb39ffae15a73f049c42fb82b1","author":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"verification":null,"timestamp":"2026-08-26T16:20:54-07:00","added":[".agents/skills/derived-project-framework-sync/SKILL.md",".agents/skills/derived-project-framework-sync/assets/framework-migration.template.md",".agents/skills/derived-project-framework-sync/references/experience-catalog.md",".agents/skills/derived-project-framework-sync/references/migration-protocol.md",".agents/skills/derived-project-framework-sync/scripts/plan-migration.mjs",".agents/skills/derived-project-framework-sync/scripts/record-migration.mjs","docs/os-product-extension.md","kernel.products.json","products/juhai.baseframework/README.md","products/juhai.baseframework/acceptance/juhai.baseframework.order.acceptance.mjs","products/juhai.baseframework/migrations/juhai.baseframework.order/20260826090000_create_orders.sql","products/juhai.baseframework/migrations/juhai.baseframework.order/20260826091000_create_order_events.sql","products/juhai.baseframework/package.json","products/juhai.baseframework/product.manifest.json","products/juhai.baseframework/src/contracts.ts","products/juhai.baseframework/src/fastify.ts","products/juhai.baseframework/src/host.ts","products/juhai.baseframework/src/index.ts","products/juhai.baseframework/src/manifest.ts","products/juhai.baseframework/src/nestjs.ts","products/juhai.baseframework/src/order-repository.ts","products/juhai.baseframework/src/tools.ts","products/juhai.baseframework/src/web.tsx","products/juhai.baseframework/test/os-host.runtime.test.ts","products/juhai.baseframework/tsconfig.os-host.json","products/juhai.baseframework/vitest.os-host.config.ts","scripts/check-os-product-compat.mjs","scripts/check-os-product-runtime.mjs"],"removed":[],"modified":["CLAUDE.md","docs/README.md","docs/governance-experience.md","docs/migration-playbook.md","package.json","reports/baseline.json","scripts/check-fork-readiness.mjs","scripts/governance-report.mjs"]}],"total_commits":0,"head_commit":{"id":"53991090b821b76dff11eee3a2e92806ed3ab173","message":"chore(reports): 刷新 OS 产品验收证据\n","url":"https://gitea.g-hi.com/luoanwu/base-framework/commit/53991090b821b76dff11eee3a2e92806ed3ab173","author":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"verification":null,"timestamp":"2026-08-26T16:22:27-07:00","added":["reports/os-product-compat.latest.json","reports/os-product-runtime.latest.json"],"removed":[],"modified":["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-governance.latest.json","reports/schema-sync.latest.json","reports/statemachine-write-guard.latest.json","reports/validation-source.latest.json"]},"repository":{"id":54,"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":"base-framework","full_name":"luoanwu/base-framework","description":"基础框架 monorepo","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":1408,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/base-framework/languages","html_url":"https://gitea.g-hi.com/luoanwu/base-framework","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/base-framework","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/base-framework.git","clone_url":"https://gitea.g-hi.com/luoanwu/base-framework.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-03T12:24:18+08:00","updated_at":"2026-08-19T23:53: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":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
|
1787787572
|
1787787593
|
0
|
1787787571
|
1787787593
|
group: governance-${{ github.workflow }}-${{ githu group: governance-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: "true"
...
|
governance-governance.yml-refs/heads/main
|
1
|
Edit
Delete
|
|
23562
|
chore(reports): 刷新治理证据至 b1510b5(clean,192 tests)
|
54
|
5
|
governance.yml
|
13
|
5
|
0
|
refs/heads/main
|
4a707c3d3ec98b8ab45864a1b40b941589433914
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"53991090b821b76dff11eee3a2e92806ed3ab173","after":"4a707c3d3ec98b8ab45864a1b40b941589433914","compare_url":"https://gitea.g-hi.com/luoanwu/base-framework/compare/53991090b821b76dff11eee3a2e92806ed3ab173...4a707c3d3ec98b8ab45864a1b40b941589433914","commits":[{"id":"4a707c3d3ec98b8ab45864a1b40b941589433914","message":"chore(reports): 刷新治理证据至 b1510b5(clean,192 tests)\n\n静态 11 项门禁 + 治理棘轮 + lint + typecheck 全绿;\n真实 PG + Redis 验收 192 tests / 0 failures,provenance 绑定 clean commit b1510b5。\n\n⚠️ 作用域:本轮证据只覆盖静态与运行态两级。浏览器级 check:ui **未重跑**——\n本机无 Node 运行时(全部门禁在 node:22 容器内挂载工作树执行),而容器内没有\nLinux 版 Playwright 浏览器(宿主缓存的是 macOS 构建)。按事实作用域表,\n不得据此宣称 UI 层已验证。\n\nCo-Authored-By: Claude Opus 4.8 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/base-framework/commit/4a707c3d3ec98b8ab45864a1b40b941589433914","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-08-29T20:40:42-07:00","added":[],"removed":[],"modified":["reports/contract-consumers.latest.json","reports/docs-truth.latest.json","reports/dual-backend-parity.latest.json","reports/fork-readiness.latest.json","reports/governance-docs.latest.json","reports/governance.latest.json","reports/migrations.latest.json","reports/naming.latest.json","reports/os-product-compat.latest.json","reports/runtime-acceptance.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/statemachine-write-guard.latest.json","reports/validation-source.latest.json"]},{"id":"b1510b5a203f7847dc99a0962cd30f36e6901dce","message":"docs(standards): 修正与实现相悖的 API 标准 + 幽灵路径机器化(批次④·下)\n\n## api-standard 的四项核心约定与实现系统性相悖\n\nCLAUDE.md 真源地图把 docs/standards/*.md 列为「工程标准口径」,使用入口表还直接路由读者\n去读它。但 api-standard 的四项核心约定没有一项与两后端实际实现一致:\n`/api/v1/` 前缀(实际 `/api`,未版本化)、`{ data: ... }` 响应包裹(实际裸资源)、\n嵌套 `error.{code,statusCode,timestamp,path}` 错误体(实际是顶层扁平的 ApiErrorBody)、\n以及一个从不存在的 `packages/contracts/src/errors/error-codes.ts`。\n\n照着它落地新模块,会做出与 contracts `ApiErrorBody` 及 web `ApiError` 消费方直接冲突的接口。\n而 review-standard 的检查清单还会让 reviewer 去核对那个幽灵文件。\n\n- 按本仓既有的 C14「标准 vs 现状」惯例(frontend-standard / backend-standard / git-standard\n 都已有)在 api-standard 头部加对照表,逐项写明目标态与当前真相,并说明改动方向:\n 要落地目标态先改实现与契约,不要反过来照着文档改接口\n- 修正 review-standard 的检查项指向真实位置\n\n## 幽灵路径机器化(C14-⑤ 同族,扫描面扩到 standards)\n\n新增 docs-truth 断言:standards 引用的 `packages/contracts/src/**.ts` 路径必须真实存在,\n否则须在同一行显式标注「目标态 / 当前不存在」。扫描面用 readdirSync 覆盖 docs/standards 全量,\n不硬编码文件清单——旧的幽灵路径断言正是因为清单式扫描漏掉了 docs/README.md 本身而失守过。\n\n该断言上线即多抓到一处此前没人发现的幽灵路径(naming-standard 的\n`packages/contracts/src/store/store.types.ts`),已一并标注。\n负向测试:去掉 review-standard 的诚实标注即红。\n\n## owner-matrix 补录 OS 产品两张业务表\n\n「先登记后建表」是本仓自己立的规则,却被自己的 C20/G23 战役打破:OS 产品包新建了\n`juhai_baseframework_orders` / `..._order_events` 两张带状态机的表却从未登记。\n补录两行并写明 `products/` 下的对象同样要登记(归属真源是 product.manifest.json 的\npersistence.tenantModels,本表挂索引行)。\n\n验收:naming / docs-truth / governance-docs / 治理棘轮均 exit 0。\n\nCo-Authored-By: Claude Opus 4.8 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/base-framework/commit/b1510b5a203f7847dc99a0962cd30f36e6901dce","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-08-29T20:39:02-07:00","added":[],"removed":[],"modified":["docs/domain/owner-matrix.md","docs/standards/api-standard.md","docs/standards/naming-standard.md","docs/standards/review-standard.md","reports/contract-consumers.latest.json","reports/docs-truth.latest.json","reports/dual-backend-parity.latest.json","reports/fork-readiness.latest.json","reports/governance-docs.latest.json","reports/governance.latest.json","reports/migrations.latest.json","reports/naming.latest.json","reports/os-product-compat.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/statemachine-write-guard.latest.json","reports/validation-source.latest.json","scripts/check-docs-truth.mjs"]},{"id":"033e8159c23f4766493fd140ffa7aa923ebe1182","message":"fix(ops): 优雅停机接线——Fastify 的 onClose 钩子此前全是死代码(批次④·中)\n\n## Fastify 从不优雅停机\n\nserver.ts 没有任何信号处理,也从不调用 app.close():进程收到 SIGTERM 走默认处理直接终止。\n后果是 prisma / redis / outbox / queue 四个插件里**精心写好的 onClose 钩子从未被执行过**——\nBullMQ worker 不 close(在途 job 只能靠 stalled 恢复)、outbox 轮询事务可能被拦腰砍断、\nWS/SSE 连接收不到 close 帧。而 NestJS 侧早有 enableShutdownHooks,两后端停机行为实质分叉。\n\n存在性门禁看得见「钩子写了」,看不见「它从来没被调用过」——这正是 G17 说的行为级盲区。\n\n- server.ts 补 SIGTERM/SIGINT → app.close()(Fastify 会按注册逆序执行全部 onClose),\n 带 10s 超时兜底(卡住的清理不能让容器一直不退)与重复信号防抖\n\n## NestJS 的 Redis 连接从不 quit,且注释谎称有人管\n\nREDIS_PUB / REDIS_SUB 由 useFactory 裸建,没有任何销毁钩子;而 event-bus.service.ts\n的注释写着「redisSub 连接由 RedisModule 统一关闭」——注释与行为相反,于是没人会去查。\n真实后果:停机时连接不回收(两个 acceptance 测试的 afterAll 至今还得手动 quit 才能让进程退出)。\n\n- RedisModule 实现 onApplicationShutdown,quit 两个连接\n- 修正 event-bus 的失实注释\n\n## 防回潮\n\ncheck:dual-backend 新增 4 条停机接线绊网(两后端各自的信号处理 / app.close /\nenableShutdownHooks / Redis 关闭钩子),负向测试已验证删掉信号处理即红。\n\n验收:真实 PG + Redis 192 tests / 0 failures;静态门禁 + 棘轮 + typecheck 5/5 + lint 2/2 全绿。\n\nCo-Authored-By: Claude Opus 4.8 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/base-framework/commit/033e8159c23f4766493fd140ffa7aa923ebe1182","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-08-29T20:35:43-07:00","added":[],"removed":[],"modified":["apps/api-fastify/src/server.ts","apps/api-nestjs/src/events/event-bus.service.ts","apps/api-nestjs/src/redis/redis.module.ts","reports/contract-consumers.latest.json","reports/docs-truth.latest.json","reports/dual-backend-parity.latest.json","reports/fork-readiness.latest.json","reports/governance-docs.latest.json","reports/governance.latest.json","reports/migrations.latest.json","reports/naming.latest.json","reports/os-product-compat.latest.json","reports/runtime-acceptance.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/statemachine-write-guard.latest.json","reports/validation-source.latest.json","scripts/check-dual-backend-parity.mjs"]},{"id":"44cbbaeacf5f53e08e6e3f48a6d8bd2c3327d2de","message":"fix(governance): 写链守护补齐五条已验证绕过(批次④·上)\n\ncheck:write-guard 守的是 P4「所有写显式带 tenant_id + 状态迁移乐观锁」这条最高优先级红线,\n但它自身存在五条可复现的绕过——每一条都能让违规代码拿到绿盘:\n\n1. **折行**:逐行匹配下 `await tx.order\\n .update({...})` 完全隐形。这甚至无需恶意——\n Prettier 对长链式调用本来就这样折行。\n2. **方括号访问**:`tx[\"order\"].update(` 用 `\\w+` 匹配不到,换个写法整条溜过去。\n3. **upsert 不在禁止模式里**:它与 update/delete 同源(同样只接受唯一键定位),\n TOCTOU 缝隙一模一样,却从未被拦。\n4. **where 里的 tenantId 从未被验证**:门禁 reason 一直宣称 where 是 `{ id, tenantId }`,\n 但只检查了方法名与 state 前置条件——`updateMany({ where: { id } })` 照样绿,\n 而那正是跨租户写。\n5. **0 行拒绝可被一行注释满足**:断言对原始源码做 includes,\n `// if (updated.count === 0)` 就能让一段被注释掉的防护报绿。\n\n修法:\n- 新增 scripts/lib/source-text.mjs 作为公共单源(stripComments / blankComments / lineOf)。\n 「注释掉的代码仍满足断言」这个形态 check-schema-sync 在 2026-08-15 已实锤并就地修过,\n 但同类断言散布在多个脚本里各自对原始源码匹配——按 P5,实锤过的教训必须推广,\n 否则只是把同一个洞留在别处。\n- A 部分改为「注释置空但保持字符偏移」后整体跨行匹配,再由偏移反推行号\n (逐行挡不住折行,整体匹配又需要能定位);禁止模式补 upsert 与方括号访问。\n- B 部分先提取 updateMany 的 where 块再逐项断言(state 前置条件 + tenantId),\n 且全部在剥注释后的源码上跑。\n\n验收:五条绕过逐一注入验证必红、逐一恢复现场;正向 10 项静态门禁 + 治理棘轮全绿。\nCLAUDE.md 基线表 write-guard 行同步为实际覆盖面(此前的描述比实际防线宽)。\n\nCo-Authored-By: Claude Opus 4.8 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/base-framework/commit/44cbbaeacf5f53e08e6e3f48a6d8bd2c3327d2de","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-08-29T20:32:47-07:00","added":["scripts/lib/source-text.mjs"],"removed":[],"modified":["CLAUDE.md","reports/contract-consumers.latest.json","reports/docs-truth.latest.json","reports/dual-backend-parity.latest.json","reports/fork-readiness.latest.json","reports/governance-docs.latest.json","reports/governance.latest.json","reports/migrations.latest.json","reports/naming.latest.json","reports/os-product-compat.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/statemachine-write-guard.latest.json","reports/validation-source.latest.json","scripts/check-statemachine-write-guard.mjs"]},{"id":"c494fc7d2e6b1497647b2ca9601766626dd4775d","message":"feat(auth): G8 生产级租户验签闭环——回退翻转 + 401 判责 + 降级通道清除(批次③)\n\nCLAUDE.md 里标注「动工前须用户点名」的最大 OPEN 缺口,验签半边落地。\n\n## 回退翻转(G8 的核心)\n\ndemo 期口径是 `Bearer 解析 ?? x-tenant-id`。接入验签后这个 `??` 会变成**降级攻击面**:\n伪造一个签名无效的 Bearer → 验签失败 → 自动落回客户端自报的 demo 头,等于没验。\n且只翻转这一处并不够——裸 `?tenantId=` 是另一条更彻底的通道,它连伪造 token 都不需要。\n\n- jwt 模式下:带 Authorization 或 ?access_token= 即**强制验签,失败一律 401,绝不回退**;\n x-tenant-id / ?tenantId= / `tenant:\u003cid\u003e` 简写整条不承认\n- demo 模式保留原型四级来源(本地与既有验收测试零改动),但**生产跑 demo 即拒绝启动**——\n 漏配鉴权应当是「起不来」,不是「起来了但谁都能进」\n\n## 架构切分:策略在 contracts,验签由后端注入\n\ncontracts 被 web 直接 import,把 jose 与密钥语义拉进去会泄漏到浏览器包。故:\n- `decideTenantResolution`(谁可信、失败怎么判)在 contracts,两后端共用,13 条单测覆盖\n- jose 验签在各后端(NestJS `src/auth/`、Fastify `src/plugins/auth.ts`)\n- `tenantFromBearerToken` 更名 `unsafeTenantClaimFromToken`:函数名里的 unsafe 是给 review 看的,\n 它只该用于浏览器 UI 预填与 demo 模式\n\nNestJS 的判定必须放 Guard 而非 `@TenantId()` 参数装饰器——后者的回调是同步的,\n判定留在那里就永远接不上异步的 JWKS 验签。\n\n## 顺带堵掉的三个额外攻击面(安全审计发现,均在已登记 G8 描述之外)\n\n1. **tenantId 是攻击者可控的自由文本**:无格式/长度约束时可凭空创建租户分区、\n 可用超长值撑爆 `@@unique([tenantId,email])` 的 btree 索引行打出稳定 500、\n 可用换行伪造日志行。现统一过 normalizeTenantId(≤128 + 受控字符集)。\n2. **重复查询参数的类型混淆**:Fastify 把 `?access_token=a\u0026access_token=b` 解析成数组,\n `typeof v === 'string'` 判定直接落空 → 静默跳过 token 分支 → 落到裸 ?tenantId=;\n 而 NestJS 的 `URLSearchParams.get()` 取第一个值。**同一条请求两后端两种身份判定**——\n 既是真实越权通道,也是 G17 行为分叉的活体实证。两侧统一取第一个值。\n3. **凭证进日志**:浏览器 EventSource/WS 无法自定义头,token 只能进 `?access_token=`,\n 而 pino 默认序列化器把完整 url 写进日志——接入真实验签后就是每次建连落盘一枚有效 JWT。\n Fastify logger 加 redact(authorization / cookie / req.url)。\n\n## 判责矩阵补上 401\n\n此前缺凭证一律回 400,把「未认证」伪装成「参数写错了」,客户端无从区分「该去登录」\n和「该改请求」。现 contracts 定义 UNAUTHENTICATED / INVALID_TOKEN / TENANT_FORBIDDEN;\n响应体**只回稳定错误码**,验签失败细节只进日志(区分「签名不对/已过期/issuer 不符」\n对攻击者是免费的探测反馈)。WS 保持 close(1008) 而非握手期 401——两后端同口径,\n且浏览器对握手 401 不暴露任何原因。\n\n## 验收\n\n真实 PG + Redis:**192 tests / 0 failures**(地板 161 → 192,只收紧)。\n两后端各 9 条 jwt 判责用例:正确签名放行 / 无凭证 401 / **伪造签名 + 合法 x-tenant-id 仍 401**\n/ 裸 demo 头 401 / 过期 401 / alg:none 401 / 无租户 claim 401 / health 免鉴权 / 重复参数不落 victim。\n新增 check:dual-backend 的 G8 绊网 5 条,每条均有负向红证据;其中「算法白名单」一条初版\n被自身的类型声明 `algorithms: string[]` 满足而无法变红,已改绑 jwtVerify 实参后重测。\n静态门禁 10/10 + 治理棘轮 + typecheck 5/5 + lint 2/2 全绿。\n\nRLS 未叠加(结构已就绪,阻碍在 CI 超级用户/单例 Prisma/dispatcher 跨租户扫描三处),\nweb 构建期内联 token 与 WS Origin 白名单同样登记为 G8 剩余项。\n\nCo-Authored-By: Claude Opus 4.8 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/base-framework/commit/c494fc7d2e6b1497647b2ca9601766626dd4775d","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-08-29T20:27:41-07:00","added":["apps/api-fastify/src/plugins/auth.ts","apps/api-fastify/test/auth.jwt.test.ts","apps/api-nestjs/src/auth/auth.guard.ts","apps/api-nestjs/src/auth/auth.module.ts","apps/api-nestjs/src/auth/token-verifier.ts","apps/api-nestjs/test/auth.jwt.test.ts"],"removed":[],"modified":["CLAUDE.md","apps/api-fastify/.env.example","apps/api-fastify/package.json","apps/api-fastify/src/app.ts","apps/api-fastify/src/modules/tenant.ts","apps/api-fastify/src/routes/ws.ts","apps/api-fastify/src/types.ts","apps/api-fastify/test/http.acceptance.test.ts","apps/api-fastify/test/realtime.tenant.test.ts","apps/api-nestjs/.env.example","apps/api-nestjs/package.json","apps/api-nestjs/src/app.module.ts","apps/api-nestjs/src/common/tenant.decorator.ts","apps/api-nestjs/src/events/events.gateway.ts","apps/api-nestjs/src/health/health.controller.ts","apps/api-nestjs/src/orders/orders.controller.ts","apps/api-nestjs/src/sse/sse.controller.ts","apps/api-nestjs/test/http.acceptance.test.ts","apps/api-nestjs/test/realtime.tenant.test.ts","apps/web/src/lib/api.ts","packages/contracts/src/contracts.test.ts","packages/contracts/src/index.ts","packages/contracts/src/tenant.ts","pnpm-lock.yaml","reports/baseline.json","reports/contract-consumers.latest.json","reports/docs-truth.latest.json","reports/dual-backend-parity.latest.json","reports/fork-readiness.latest.json","reports/governance-docs.latest.json","reports/governance.latest.json","reports/migrations.latest.json","reports/naming.latest.json","reports/os-product-compat.latest.json","reports/runtime-acceptance.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/statemachine-write-guard.latest.json","reports/validation-source.latest.json","scripts/check-dual-backend-parity.mjs"]}],"total_commits":0,"head_commit":{"id":"4a707c3d3ec98b8ab45864a1b40b941589433914","message":"chore(reports): 刷新治理证据至 b1510b5(clean,192 tests)\n\n静态 11 项门禁 + 治理棘轮 + lint + typecheck 全绿;\n真实 PG + Redis 验收 192 tests / 0 failures,provenance 绑定 clean commit b1510b5。\n\n⚠️ 作用域:本轮证据只覆盖静态与运行态两级。浏览器级 check:ui **未重跑**——\n本机无 Node 运行时(全部门禁在 node:22 容器内挂载工作树执行),而容器内没有\nLinux 版 Playwright 浏览器(宿主缓存的是 macOS 构建)。按事实作用域表,\n不得据此宣称 UI 层已验证。\n\nCo-Authored-By: Claude Opus 4.8 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/base-framework/commit/4a707c3d3ec98b8ab45864a1b40b941589433914","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-08-29T20:40:42-07:00","added":[],"removed":[],"modified":["reports/contract-consumers.latest.json","reports/docs-truth.latest.json","reports/dual-backend-parity.latest.json","reports/fork-readiness.latest.json","reports/governance-docs.latest.json","reports/governance.latest.json","reports/migrations.latest.json","reports/naming.latest.json","reports/os-product-compat.latest.json","reports/runtime-acceptance.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/statemachine-write-guard.latest.json","reports/validation-source.latest.json"]},"repository":{"id":54,"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":"base-framework","full_name":"luoanwu/base-framework","description":"基础框架 monorepo","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":1968,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/base-framework/languages","html_url":"https://gitea.g-hi.com/luoanwu/base-framework","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/base-framework","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/base-framework.git","clone_url":"https://gitea.g-hi.com/luoanwu/base-framework.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-07-03T12:24:18+08:00","updated_at":"2026-08-30T11:43: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
|
1788065693
|
1788065725
|
0
|
1788064993
|
1788065727
|
group: governance-${{ github.workflow }}-${{ githu group: governance-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: ${{ github.event_name == 'pull_request' }}
...
|
governance-governance.yml-refs/heads/main
|
0
|
Edit
Delete
|
|
23563
|
fix(governance): 收口实时顺序与验收缺口
|
54
|
5
|
governance.yml
|
14
|
5
|
0
|
refs/heads/main
|
a9e18b9599335b3ad128ac8c761fc93b83de8711
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"4a707c3d3ec98b8ab45864a1b40b941589433914","after":"a9e18b9599335b3ad128ac8c761fc93b83de8711","compare_url":"https://gitea.g-hi.com/luoanwu/base-framework/compare/4a707c3d3ec98b8ab45864a1b40b941589433914...a9e18b9599335b3ad128ac8c761fc93b83de8711","commits":[{"id":"a9e18b9599335b3ad128ac8c761fc93b83de8711","message":"fix(governance): 收口实时顺序与验收缺口\n","url":"https://gitea.g-hi.com/luoanwu/base-framework/commit/a9e18b9599335b3ad128ac8c761fc93b83de8711","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-08-29T22:20:28-07:00","added":["apps/api-fastify/test/realtime.buffer.test.ts","packages/contracts/src/replay-buffer.test.ts","packages/contracts/src/replay-buffer.ts"],"removed":[],"modified":["CLAUDE.md","apps/api-fastify/src/modules/orders/orders.service.ts","apps/api-fastify/src/plugins/auth.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/redis.ts","apps/api-fastify/src/routes/sse.ts","apps/api-fastify/src/routes/ws.ts","apps/api-fastify/test/auth.jwt.test.ts","apps/api-fastify/test/orders.integration.test.ts","apps/api-fastify/test/outbox.concurrency.test.ts","apps/api-fastify/test/outbox.deadletter.test.ts","apps/api-nestjs/prisma/schema.prisma","apps/api-nestjs/src/auth/token-verifier.ts","apps/api-nestjs/src/events/events.gateway.ts","apps/api-nestjs/src/events/outbox-dispatcher.service.ts","apps/api-nestjs/src/orders/orders.service.ts","apps/api-nestjs/src/queue/jobs.processor.ts","apps/api-nestjs/src/redis/redis.module.ts","apps/api-nestjs/src/sse/sse.controller.ts","apps/api-nestjs/test/auth.jwt.test.ts","apps/api-nestjs/test/orders.integration.test.ts","apps/api-nestjs/test/outbox.concurrency.test.ts","apps/api-nestjs/test/outbox.deadletter.test.ts","apps/web/e2e/acceptance.spec.ts","apps/web/src/components/OrdersPanel.tsx","apps/web/src/lib/api.ts","docs/governance-experience.md","packages/contracts/src/contracts.test.ts","packages/contracts/src/index.ts","packages/contracts/src/order.ts","packages/contracts/src/realtime.ts","products/juhai.baseframework/src/tools.ts","reports/contract-consumers.latest.json","reports/docs-truth.latest.json","reports/dual-backend-parity.latest.json","reports/fork-readiness.latest.json","reports/governance-docs.latest.json","reports/governance.latest.json","reports/migrations.latest.json","reports/naming.latest.json","reports/os-product-compat.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/statemachine-write-guard.latest.json","reports/validation-source.latest.json","scripts/check-contract-consumers.mjs","scripts/check-dual-backend-parity.mjs","scripts/check-os-product-compat.mjs","scripts/check-ui-acceptance.mjs","scripts/check-validation-source.mjs"]}],"total_commits":0,"head_commit":{"id":"a9e18b9599335b3ad128ac8c761fc93b83de8711","message":"fix(governance): 收口实时顺序与验收缺口\n","url":"https://gitea.g-hi.com/luoanwu/base-framework/commit/a9e18b9599335b3ad128ac8c761fc93b83de8711","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-08-29T22:20:28-07:00","added":["apps/api-fastify/test/realtime.buffer.test.ts","packages/contracts/src/replay-buffer.test.ts","packages/contracts/src/replay-buffer.ts"],"removed":[],"modified":["CLAUDE.md","apps/api-fastify/src/modules/orders/orders.service.ts","apps/api-fastify/src/plugins/auth.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/redis.ts","apps/api-fastify/src/routes/sse.ts","apps/api-fastify/src/routes/ws.ts","apps/api-fastify/test/auth.jwt.test.ts","apps/api-fastify/test/orders.integration.test.ts","apps/api-fastify/test/outbox.concurrency.test.ts","apps/api-fastify/test/outbox.deadletter.test.ts","apps/api-nestjs/prisma/schema.prisma","apps/api-nestjs/src/auth/token-verifier.ts","apps/api-nestjs/src/events/events.gateway.ts","apps/api-nestjs/src/events/outbox-dispatcher.service.ts","apps/api-nestjs/src/orders/orders.service.ts","apps/api-nestjs/src/queue/jobs.processor.ts","apps/api-nestjs/src/redis/redis.module.ts","apps/api-nestjs/src/sse/sse.controller.ts","apps/api-nestjs/test/auth.jwt.test.ts","apps/api-nestjs/test/orders.integration.test.ts","apps/api-nestjs/test/outbox.concurrency.test.ts","apps/api-nestjs/test/outbox.deadletter.test.ts","apps/web/e2e/acceptance.spec.ts","apps/web/src/components/OrdersPanel.tsx","apps/web/src/lib/api.ts","docs/governance-experience.md","packages/contracts/src/contracts.test.ts","packages/contracts/src/index.ts","packages/contracts/src/order.ts","packages/contracts/src/realtime.ts","products/juhai.baseframework/src/tools.ts","reports/contract-consumers.latest.json","reports/docs-truth.latest.json","reports/dual-backend-parity.latest.json","reports/fork-readiness.latest.json","reports/governance-docs.latest.json","reports/governance.latest.json","reports/migrations.latest.json","reports/naming.latest.json","reports/os-product-compat.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/statemachine-write-guard.latest.json","reports/validation-source.latest.json","scripts/check-contract-consumers.mjs","scripts/check-dual-backend-parity.mjs","scripts/check-os-product-compat.mjs","scripts/check-ui-acceptance.mjs","scripts/check-validation-source.mjs"]},"repository":{"id":54,"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":"base-framework","full_name":"luoanwu/base-framework","description":"基础框架 monorepo","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":1968,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/base-framework/languages","html_url":"https://gitea.g-hi.com/luoanwu/base-framework","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/base-framework","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/base-framework.git","clone_url":"https://gitea.g-hi.com/luoanwu/base-framework.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-07-03T12:24:18+08:00","updated_at":"2026-08-30T12:43:13+08:00","archived_at":"1970-01-01T08:00:00+08:00","permissions":{"admin":true,"push":true,"pull":true},"has_code":true,"has_issues":true,"internal_tracker":{"enable_time_tracker":true,"allow_only_contributors_to_track_time":true,"enable_issue_dependencies":true},"has_wiki":true,"has_pull_requests":true,"has_projects":true,"projects_mode":"all","has_releases":true,"has_packages":true,"has_actions":true,"ignore_whitespace_conflicts":false,"allow_merge_commits":true,"allow_rebase":true,"allow_rebase_explicit":true,"allow_squash_merge":true,"allow_fast_forward_only_merge":true,"allow_rebase_update":true,"allow_manual_merge":false,"autodetect_manual_merge":false,"default_delete_branch_after_merge":false,"default_merge_style":"merge","default_allow_maintainer_edit":true,"avatar_url":"","internal":false,"mirror_interval":"","object_format_name":"sha1","mirror_updated":"0001-01-01T00:00:00Z","topics":[],"licenses":[]},"pusher":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"sender":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"}}...
|
push
|
2
|
6
|
1788067980
|
1788068070
|
0
|
1788067980
|
1788068071
|
group: governance-${{ github.workflow }}-${{ githu group: governance-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: ${{ github.event_name == 'pull_request' }}
...
|
governance-governance.yml-refs/heads/main
|
0
|
Edit
Delete
|
|
23572
|
chore(reports): 刷新三级治理证据至 3bb349d(clean,202 tests chore(reports): 刷新三级治理证据至 3bb349d(clean,202 tests / 8 UI)...
|
54
|
5
|
governance.yml
|
15
|
5
|
0
|
refs/heads/main
|
6449421518ff6b2dd62b6ff862ff44aedcbbea29
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"a9e18b9599335b3ad128ac8c761fc93b83de8711","after":"6449421518ff6b2dd62b6ff862ff44aedcbbea29","compare_url":"https://gitea.g-hi.com/luoanwu/base-framework/compare/a9e18b9599335b3ad128ac8c761fc93b83de8711...6449421518ff6b2dd62b6ff862ff44aedcbbea29","commits":[{"id":"6449421518ff6b2dd62b6ff862ff44aedcbbea29","message":"chore(reports): 刷新三级治理证据至 3bb349d(clean,202 tests / 8 UI)\n\n三级门禁均在 clean 工作区、同一提交 3bb349d 上实跑:\n\n- 静态 pnpm check:13 项门禁 + lint + typecheck,exit 0\n- 真实 DB pnpm check:runtime:202 tests / 0 failures、两后端迁移 deploy+status、\n 双后端同夹具差分 0 differences(PG base_framework_rt_final + Redis db11)\n- 浏览器 pnpm check:ui:8 用例 / 0 失败 / 0 跳过(PG base_framework_ui_final + db12)\n\n三份报告的 provenance 均为 gitSha=3bb349d、worktreeDirty=false,\n不再是此前绑定 a9e18b9 dirty 的 STALE 证据。\n\n新增报告:conformance-matrix、conformance-differential、governance-rules、\ngovernance-profile-kernel、governance-status(四层 profile 当前均为 PARTIAL——\nADR-0010 仍是 Proposed,observe 模式只诊断,不构成发布放行)。\n\n作用域声明:以上仅证明「本机 hillao 在 3bb349d 这个 clean commit 上通过三级门禁」,\n推不出远端已发布或 CI 已拦截(G14 仍 OPEN)。\ncheck:os-product 本轮显式 SKIPPED(上游 OS 检出不在场),未写 osProduct* 指标。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/base-framework/commit/6449421518ff6b2dd62b6ff862ff44aedcbbea29","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-08-31T16:36:45-07:00","added":["reports/conformance-differential.latest.json","reports/conformance-matrix.latest.json","reports/governance-profile-kernel.latest.json","reports/governance-rules.latest.json","reports/governance-status.latest.json"],"removed":[],"modified":["reports/contract-consumers.latest.json","reports/docs-truth.latest.json","reports/dual-backend-parity.latest.json","reports/fork-readiness.latest.json","reports/governance-docs.latest.json","reports/governance.latest.json","reports/migrations.latest.json","reports/naming.latest.json","reports/os-product-compat.latest.json","reports/os-product-runtime.latest.json","reports/runtime-acceptance.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/statemachine-write-guard.latest.json","reports/ui-acceptance.latest.json","reports/validation-source.latest.json"]},{"id":"3bb349d8ab4351f7f17927b50c94255a7d8abbef","message":"fix(test): outbox 幂等键用例按租户收窄——移除它自己保证不了的全局隔离假设\n\n`dispatchOutboxBatch` 按设计跨租户全局扫描(outbox dispatcher 的\nwrite-guard-allow 豁免正为此),而 check:runtime 让两后端套件经 turbo 并行\n打同一个库。该用例却断言「全库只有我这一行待投递」——兄弟套件此刻产生的\n未投递行会被一并领走,于是期望 1 实得 2/3,数量随并行时序漂移。\n\n实测:连续两次全量红且失败对象不同(realtime.tenant 一次、outbox 一次),\n换全新库仍红且计数从 2 涨到 3;单独复跑该文件恒绿——典型的共享基座污染\n(G18 已登记族、审计发现「两后端共享 DB/Redis」的又一实证)。\n\n本用例要证的是「信封 id 恒等于 outbox 行 id」这条幂等键稳定性,与其他租户\n有多少行无关,故 publish 回调按 tenantId 过滤后再断言。这是移除伪假设,\n不是放宽断言:跨实例不重复投递由同文件上一条用例独立守护。\n\ncheck:runtime:202 tests、0 failures、差分 0 differences(exit 0)。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/base-framework/commit/3bb349d8ab4351f7f17927b50c94255a7d8abbef","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-08-31T16:34:17-07:00","added":[],"removed":[],"modified":["apps/api-fastify/test/outbox.concurrency.test.ts"]},{"id":"886537eae83f56d3b662e070575ddf3d9a72307f","message":"feat(governance): ADR-0010 阶段一/二——治理分层与同 SHA 证据模型\n\n把「一堆各自为政的门禁 + 最近一次运行的报告」升级为分层规则与可聚合证据。\nADR-0010 当前为 Proposed,本批只落 observe 模式的实现,不改变现行放行口径。\n\n规则生命周期\n- governance.rules.json + schema:16 条规则,每条带 owner、作用域、严重度、\n 证据映射、profile 归属、ADR 引用与例外期限;check:governance-rules 校验\n 规则无主/入口缺失/例外过期/profile 循环依赖,registryVersion=3。\n\n四层 profile 入口\n- check:kernel / check:production / check:conformance / check:extension,\n 经 check-governance-profile.mjs 统一编排(非 Kernel 的 profile 先跑 Kernel)。\n- governance:status 生成同 SHA 状态清单:缺失、陈旧、dirty、跨 SHA 或未绑定\n registryVersion 的证据一律不产出 VERIFIED,当前四层均为 PARTIAL——\n 这正是它没在拿旧证据冒充绿盘的证明。\n\n双后端行为身份\n- conformance.matrix.json 锁 8 cases × 2 backends 的 case 身份;\n- check:conformance:differential 用**同一夹具**逐字段比较两端 HTTP/DB/outbox\n 的 7 个 checkpoint。存在性门禁看不见语义漂移,差分才看得见。\n\n证据来源加固\n- report-provenance 增加 registryVersion / run URL / artifact 身份;\n- 验收 runner(check:runtime / check:ui)拒绝 GOV_REPORT_* 覆盖变量并 exit 2\n ——此前可用它们一行伪造出「clean@HEAD 通过」的验收报告;\n- governance-report 的缺失指标改 fail-closed:预期指标 key 消失时不再落到\n `?? -1`/`?? 0` 被当成「变好」静默过闸(C18 同族,发生在 current 侧)。\n\n其他\n- runtime-governance 审计与验收基座守卫抽到 scripts/lib,供多入口复用;\n- check 链移出 check:os-product(它依赖仓外 OS 检出,会让静态门禁不自包含、\n GitHub CI 结构性必红);缺失时显式 SKIPPED,要真实校验用 check:full;\n- governance.yml 改三段 artifact 汇总;\n- baseline 仅收紧:ownTests 24→28、ownTestCases 146→197、testsPassed 192→202、\n uiTestsPassed 4→8,另加 5 项新地板,无任何放宽。\n\npnpm check:13 项静态门禁 + lint + typecheck 全绿(exit 0)。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/base-framework/commit/886537eae83f56d3b662e070575ddf3d9a72307f","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-08-31T16:28:40-07:00","added":["apps/api-nestjs/test/conformance.differential.ts","apps/api-nestjs/vitest.conformance.config.ts","conformance.matrix.json","docs/adr/0010-governance-layering-and-evidence-model.md","governance.rules.json","governance.rules.schema.json","scripts/check-conformance-differential.mjs","scripts/check-conformance-matrix.mjs","scripts/check-governance-profile.mjs","scripts/check-governance-rules.mjs","scripts/check-runtime-governance.mjs","scripts/generate-governance-status.mjs","scripts/lib/acceptance-base-guard.mjs","scripts/lib/runtime-governance-audit.mjs"],"removed":[],"modified":[".agents/skills/derived-project-framework-sync/SKILL.md",".agents/skills/derived-project-framework-sync/references/migration-protocol.md",".agents/skills/derived-project-framework-sync/scripts/plan-migration.mjs",".github/workflows/governance.yml","CLAUDE.md","README.md","docs/adr/README.md","docs/migration-playbook.md","package.json","reports/baseline.json","scripts/check-docs-truth.mjs","scripts/check-fork-readiness.mjs","scripts/check-runtime-acceptance.mjs","scripts/check-ui-acceptance.mjs","scripts/governance-report.mjs","scripts/lib/report-provenance.mjs"]},{"id":"ec489eae037f3a7bc6b027898804a8b1bde0fc23","message":"fix(app): 404 不泄露资源 id + 前端断网桥接\n\n两处由治理证据实锤出来的产品缺陷:\n\n1. NestJS 订单 404 回显了资源 id(`Order \u003cid\u003e not found`),跨租户探测据此\n 可确认某 id 是否存在——404 的意义正是不泄露存在性。同时 Nest 默认异常体\n 带 statusCode/error 元数据,与 Fastify 的 `{message}` 形成两套对外契约。\n 现统一为稳定 ApiErrorBody `{ message: \"Order not found\" }`。\n\n2. useRealtime 缺 offline/online 桥接:WS/SSE 的 close/error 只在 TCP 真正\n 断开时触发,而「网络没了但连接还挂着」(拔网线、飞行模式、Playwright\n setOffline)不会立刻断 TCP,服务端 30s 心跳也只是数据帧——状态徽章会停在\n Connected 假绿。现监听 window offline/online:offline 主动断开并入既有退避\n 重连路径;online 清退避定时器立即重连,但不直接置 open——navigator.onLine\n 只有 false 是确定的,恢复后仍由真实连接结果决定状态。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/base-framework/commit/ec489eae037f3a7bc6b027898804a8b1bde0fc23","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-08-31T16:28:00-07:00","added":[],"removed":[],"modified":["apps/api-nestjs/src/orders/orders.service.ts","apps/web/src/hooks/useRealtime.ts"]}],"total_commits":0,"head_commit":{"id":"6449421518ff6b2dd62b6ff862ff44aedcbbea29","message":"chore(reports): 刷新三级治理证据至 3bb349d(clean,202 tests / 8 UI)\n\n三级门禁均在 clean 工作区、同一提交 3bb349d 上实跑:\n\n- 静态 pnpm check:13 项门禁 + lint + typecheck,exit 0\n- 真实 DB pnpm check:runtime:202 tests / 0 failures、两后端迁移 deploy+status、\n 双后端同夹具差分 0 differences(PG base_framework_rt_final + Redis db11)\n- 浏览器 pnpm check:ui:8 用例 / 0 失败 / 0 跳过(PG base_framework_ui_final + db12)\n\n三份报告的 provenance 均为 gitSha=3bb349d、worktreeDirty=false,\n不再是此前绑定 a9e18b9 dirty 的 STALE 证据。\n\n新增报告:conformance-matrix、conformance-differential、governance-rules、\ngovernance-profile-kernel、governance-status(四层 profile 当前均为 PARTIAL——\nADR-0010 仍是 Proposed,observe 模式只诊断,不构成发布放行)。\n\n作用域声明:以上仅证明「本机 hillao 在 3bb349d 这个 clean commit 上通过三级门禁」,\n推不出远端已发布或 CI 已拦截(G14 仍 OPEN)。\ncheck:os-product 本轮显式 SKIPPED(上游 OS 检出不在场),未写 osProduct* 指标。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/base-framework/commit/6449421518ff6b2dd62b6ff862ff44aedcbbea29","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-08-31T16:36:45-07:00","added":["reports/conformance-differential.latest.json","reports/conformance-matrix.latest.json","reports/governance-profile-kernel.latest.json","reports/governance-rules.latest.json","reports/governance-status.latest.json"],"removed":[],"modified":["reports/contract-consumers.latest.json","reports/docs-truth.latest.json","reports/dual-backend-parity.latest.json","reports/fork-readiness.latest.json","reports/governance-docs.latest.json","reports/governance.latest.json","reports/migrations.latest.json","reports/naming.latest.json","reports/os-product-compat.latest.json","reports/os-product-runtime.latest.json","reports/runtime-acceptance.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/statemachine-write-guard.latest.json","reports/ui-acceptance.latest.json","reports/validation-source.latest.json"]},"repository":{"id":54,"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":"base-framework","full_name":"luoanwu/base-framework","description":"基础框架 monorepo","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":2145,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/base-framework/languages","html_url":"https://gitea.g-hi.com/luoanwu/base-framework","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/base-framework","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/base-framework.git","clone_url":"https://gitea.g-hi.com/luoanwu/base-framework.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-07-03T12:24:18+08:00","updated_at":"2026-08-30T13:33: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
|
10
|
1788219424
|
1788219454
|
0
|
1788219424
|
1788219464
|
group: governance-${{ github.workflow }}-${{ githu group: governance-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: ${{ github.event_name == 'pull_request' }}
...
|
governance-governance.yml-refs/heads/main
|
0
|
Edit
Delete
|
|
23573
|
docs(governance): 动态区回灌至 clean @ 3bb349d + 把「动态区与报 docs(governance): 动态区回灌至 clean @ 3bb349d + 把「动态区与报告同步」机器化...
|
54
|
5
|
governance.yml
|
16
|
5
|
0
|
refs/heads/main
|
a9bf41341677134557538182b87a1339aa7b7616
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"6449421518ff6b2dd62b6ff862ff44aedcbbea29","after":"a9bf41341677134557538182b87a1339aa7b7616","compare_url":"https://gitea.g-hi.com/luoanwu/base-framework/compare/6449421518ff6b2dd62b6ff862ff44aedcbbea29...a9bf41341677134557538182b87a1339aa7b7616","commits":[{"id":"a9bf41341677134557538182b87a1339aa7b7616","message":"docs(governance): 动态区回灌至 clean @ 3bb349d + 把「动态区与报告同步」机器化\n\n回灌\n- 三级证据新鲜度从 `dirty @ a9e18b9` 更正为 **clean @ `3bb349d`**(静态 exit 0、\n runtime 202 tests / 差分 0 differences、UI 8 用例),并记录本轮实际基座库名与端口覆盖;\n- G0 余项(clean commit 三级重跑)标记完成;\n- 基线表 6 行「本地 dirty」改为 clean 绑定;\n- OS 两级本轮 SKIPPED / 未实跑,诚实标为 🟡 STALE——不随其他行一起蹭 clean。\n\n机器化(P5:机器门禁 \u003e 手册条目 \u003e 口头经验)\ncheck:docs-truth 新增 freshness-sha-runtime / freshness-sha-ui 两条断言:\n动态区声明的 SHA 必须等于对应 latest 报告的 provenance.gitSha。\n\n实锤依据:连续两轮报告刷新提交都没回灌动态区(报告 clean @ 3bb349d,\n动态区仍写 dirty @ a9e18b9);而 CLAUDE.md 自己规定「判定治理状态只认动态区 + reports」,\n两份真源打架时该规矩直接失效。同一轮人工回灌时我又把「本轮根本没跑」的 OS 行\n误标成 clean——人肉同步不可靠,正是 P5 要求机器化的形态。\n\n刻意不含静态级:governance.latest.json 每次 pnpm check 都重新生成并绑定当时 HEAD,\n对它断言等价于「每次提交都必须改文档」、提交报告后必红,那是会误杀的门禁。\nruntime/UI 报告只有显式跑真实验收才会变,「报告动了而文档没跟上」才是真信号。\n\n负向测试(收尾清单要求):\n① 把 runtime 行 SHA 篡改为 a9e18b9 → freshness-sha-runtime 精确红;\n② 删掉 UI 行的 SHA 声明 → freshness-sha-ui 精确红;\n两次均恢复现场后复跑转绿。pnpm check exit 0。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/base-framework/commit/a9bf41341677134557538182b87a1339aa7b7616","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-08-31T17:00:44-07:00","added":[],"removed":[],"modified":["CLAUDE.md","reports/conformance-matrix.latest.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-rules.latest.json","reports/governance-status.latest.json","reports/governance.latest.json","reports/migrations.latest.json","reports/naming.latest.json","reports/os-product-compat.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/statemachine-write-guard.latest.json","reports/validation-source.latest.json","scripts/check-docs-truth.mjs"]}],"total_commits":0,"head_commit":{"id":"a9bf41341677134557538182b87a1339aa7b7616","message":"docs(governance): 动态区回灌至 clean @ 3bb349d + 把「动态区与报告同步」机器化\n\n回灌\n- 三级证据新鲜度从 `dirty @ a9e18b9` 更正为 **clean @ `3bb349d`**(静态 exit 0、\n runtime 202 tests / 差分 0 differences、UI 8 用例),并记录本轮实际基座库名与端口覆盖;\n- G0 余项(clean commit 三级重跑)标记完成;\n- 基线表 6 行「本地 dirty」改为 clean 绑定;\n- OS 两级本轮 SKIPPED / 未实跑,诚实标为 🟡 STALE——不随其他行一起蹭 clean。\n\n机器化(P5:机器门禁 \u003e 手册条目 \u003e 口头经验)\ncheck:docs-truth 新增 freshness-sha-runtime / freshness-sha-ui 两条断言:\n动态区声明的 SHA 必须等于对应 latest 报告的 provenance.gitSha。\n\n实锤依据:连续两轮报告刷新提交都没回灌动态区(报告 clean @ 3bb349d,\n动态区仍写 dirty @ a9e18b9);而 CLAUDE.md 自己规定「判定治理状态只认动态区 + reports」,\n两份真源打架时该规矩直接失效。同一轮人工回灌时我又把「本轮根本没跑」的 OS 行\n误标成 clean——人肉同步不可靠,正是 P5 要求机器化的形态。\n\n刻意不含静态级:governance.latest.json 每次 pnpm check 都重新生成并绑定当时 HEAD,\n对它断言等价于「每次提交都必须改文档」、提交报告后必红,那是会误杀的门禁。\nruntime/UI 报告只有显式跑真实验收才会变,「报告动了而文档没跟上」才是真信号。\n\n负向测试(收尾清单要求):\n① 把 runtime 行 SHA 篡改为 a9e18b9 → freshness-sha-runtime 精确红;\n② 删掉 UI 行的 SHA 声明 → freshness-sha-ui 精确红;\n两次均恢复现场后复跑转绿。pnpm check exit 0。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/base-framework/commit/a9bf41341677134557538182b87a1339aa7b7616","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-08-31T17:00:44-07:00","added":[],"removed":[],"modified":["CLAUDE.md","reports/conformance-matrix.latest.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-rules.latest.json","reports/governance-status.latest.json","reports/governance.latest.json","reports/migrations.latest.json","reports/naming.latest.json","reports/os-product-compat.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/statemachine-write-guard.latest.json","reports/validation-source.latest.json","scripts/check-docs-truth.mjs"]},"repository":{"id":54,"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":"base-framework","full_name":"luoanwu/base-framework","description":"基础框架 monorepo","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":2335,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/base-framework/languages","html_url":"https://gitea.g-hi.com/luoanwu/base-framework","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/base-framework","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/base-framework.git","clone_url":"https://gitea.g-hi.com/luoanwu/base-framework.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-07-03T12:24:18+08:00","updated_at":"2026-09-01T07:37:04+08:00","archived_at":"1970-01-01T08:00:00+08:00","permissions":{"admin":true,"push":true,"pull":true},"has_code":true,"has_issues":true,"internal_tracker":{"enable_time_tracker":true,"allow_only_contributors_to_track_time":true,"enable_issue_dependencies":true},"has_wiki":true,"has_pull_requests":true,"has_projects":true,"projects_mode":"all","has_releases":true,"has_packages":true,"has_actions":true,"ignore_whitespace_conflicts":false,"allow_merge_commits":true,"allow_rebase":true,"allow_rebase_explicit":true,"allow_squash_merge":true,"allow_fast_forward_only_merge":true,"allow_rebase_update":true,"allow_manual_merge":false,"autodetect_manual_merge":false,"default_delete_branch_after_merge":false,"default_merge_style":"merge","default_allow_maintainer_edit":true,"avatar_url":"","internal":false,"mirror_interval":"","object_format_name":"sha1","mirror_updated":"0001-01-01T00:00:00Z","topics":[],"licenses":[]},"pusher":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"sender":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"}}...
|
push
|
2
|
10
|
1788220856
|
1788220879
|
0
|
1788220856
|
1788220888
|
group: governance-${{ github.workflow }}-${{ githu group: governance-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: ${{ github.event_name == 'pull_request' }}
...
|
governance-governance.yml-refs/heads/main
|
0
|
Edit
Delete
|
|
23574
|
chore(os-product): OS 两级验收在 clean commit 上重跑并回灌动态区
|
54
|
5
|
governance.yml
|
17
|
5
|
0
|
refs/heads/main
|
742f865d0672599ba182b16012b7671b114f273f
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"a9bf41341677134557538182b87a1339aa7b7616","after":"742f865d0672599ba182b16012b7671b114f273f","compare_url":"https://gitea.g-hi.com/luoanwu/base-framework/compare/a9bf41341677134557538182b87a1339aa7b7616...742f865d0672599ba182b16012b7671b114f273f","commits":[{"id":"742f865d0672599ba182b16012b7671b114f273f","message":"chore(os-product): OS 两级验收在 clean commit 上重跑并回灌动态区\n\n上一轮 OS 两级因上游检出未显式提供而 SKIPPED,动态区据实标为 STALE。\n本轮显式给 DIGITAL_EMPLOYEE_OS_ROOT 后重跑,两级均绿:\n\n- check:os-product(静态兼容):juhai.baseframework@0.1.0 / protocol 1.3.0\n / 2 migrations / 1 acceptance suite,0 违规\n- check:os-product:runtime(双宿主真实验收):NestJS + Fastify / 8 cases / 0 failures\n (DB base_framework_os_product_a9bf413 + Redis db13,Node 22.23.2)\n\n证据绑定:本仓 clean @ a9bf413;上游 OS 本机检出源码 clean @ 89b2ade。\n\n关于上游 clean 的判定依据(不接受「报告说 clean 就是 clean」):\n上游工作树 git status 有 24 个变更,但已逐条核实全部匹配 reports/*.latest.json;\nreport-provenance 的 worktreeDirty 按文档化语义刻意排除该模式(报告是运行产物,\n前一个门禁刷新它们不应被后续门禁误判为「被验收源码 dirty」)。\n用同一排除规则跑 `git status --porcelain=v1 -- ':(exclude)reports/*.latest.json'`\n结果为空——源码确实 clean,dirty=false 不是假绿。\n\npnpm check exit 0;check:docs-truth 的动态区 SHA 断言仍绿。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/base-framework/commit/742f865d0672599ba182b16012b7671b114f273f","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-08-31T17:04:22-07:00","added":[],"removed":[],"modified":["CLAUDE.md","reports/conformance-matrix.latest.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-rules.latest.json","reports/governance-status.latest.json","reports/governance.latest.json","reports/migrations.latest.json","reports/naming.latest.json","reports/os-product-compat.latest.json","reports/os-product-runtime.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/statemachine-write-guard.latest.json","reports/validation-source.latest.json"]}],"total_commits":0,"head_commit":{"id":"742f865d0672599ba182b16012b7671b114f273f","message":"chore(os-product): OS 两级验收在 clean commit 上重跑并回灌动态区\n\n上一轮 OS 两级因上游检出未显式提供而 SKIPPED,动态区据实标为 STALE。\n本轮显式给 DIGITAL_EMPLOYEE_OS_ROOT 后重跑,两级均绿:\n\n- check:os-product(静态兼容):juhai.baseframework@0.1.0 / protocol 1.3.0\n / 2 migrations / 1 acceptance suite,0 违规\n- check:os-product:runtime(双宿主真实验收):NestJS + Fastify / 8 cases / 0 failures\n (DB base_framework_os_product_a9bf413 + Redis db13,Node 22.23.2)\n\n证据绑定:本仓 clean @ a9bf413;上游 OS 本机检出源码 clean @ 89b2ade。\n\n关于上游 clean 的判定依据(不接受「报告说 clean 就是 clean」):\n上游工作树 git status 有 24 个变更,但已逐条核实全部匹配 reports/*.latest.json;\nreport-provenance 的 worktreeDirty 按文档化语义刻意排除该模式(报告是运行产物,\n前一个门禁刷新它们不应被后续门禁误判为「被验收源码 dirty」)。\n用同一排除规则跑 `git status --porcelain=v1 -- ':(exclude)reports/*.latest.json'`\n结果为空——源码确实 clean,dirty=false 不是假绿。\n\npnpm check exit 0;check:docs-truth 的动态区 SHA 断言仍绿。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/base-framework/commit/742f865d0672599ba182b16012b7671b114f273f","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-08-31T17:04:22-07:00","added":[],"removed":[],"modified":["CLAUDE.md","reports/conformance-matrix.latest.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-rules.latest.json","reports/governance-status.latest.json","reports/governance.latest.json","reports/migrations.latest.json","reports/naming.latest.json","reports/os-product-compat.latest.json","reports/os-product-runtime.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/statemachine-write-guard.latest.json","reports/validation-source.latest.json"]},"repository":{"id":54,"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":"base-framework","full_name":"luoanwu/base-framework","description":"基础框架 monorepo","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":2394,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/base-framework/languages","html_url":"https://gitea.g-hi.com/luoanwu/base-framework","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/base-framework","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/base-framework.git","clone_url":"https://gitea.g-hi.com/luoanwu/base-framework.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-07-03T12:24:18+08:00","updated_at":"2026-09-01T08:00:56+08:00","archived_at":"1970-01-01T08:00:00+08:00","permissions":{"admin":true,"push":true,"pull":true},"has_code":true,"has_issues":true,"internal_tracker":{"enable_time_tracker":true,"allow_only_contributors_to_track_time":true,"enable_issue_dependencies":true},"has_wiki":true,"has_pull_requests":true,"has_projects":true,"projects_mode":"all","has_releases":true,"has_packages":true,"has_actions":true,"ignore_whitespace_conflicts":false,"allow_merge_commits":true,"allow_rebase":true,"allow_rebase_explicit":true,"allow_squash_merge":true,"allow_fast_forward_only_merge":true,"allow_rebase_update":true,"allow_manual_merge":false,"autodetect_manual_merge":false,"default_delete_branch_after_merge":false,"default_merge_style":"merge","default_allow_maintainer_edit":true,"avatar_url":"","internal":false,"mirror_interval":"","object_format_name":"sha1","mirror_updated":"0001-01-01T00:00:00Z","topics":[],"licenses":[]},"pusher":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"sender":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"}}...
|
push
|
2
|
10
|
1788221066
|
1788221486
|
0
|
1788221065
|
1788221496
|
group: governance-${{ github.workflow }}-${{ githu group: governance-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: ${{ github.event_name == 'pull_request' }}
...
|
governance-governance.yml-refs/heads/main
|
0
|
Edit
Delete
|
|
23575
|
chore(reports): 刷新三级证据至 cb2a1f0(clean)+ 动态区同步回灌
|
54
|
5
|
governance.yml
|
18
|
5
|
0
|
refs/heads/main
|
75189f8787bc51f9cf16ba7b2fdcb735aea2ec15
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"742f865d0672599ba182b16012b7671b114f273f","after":"75189f8787bc51f9cf16ba7b2fdcb735aea2ec15","compare_url":"https://gitea.g-hi.com/luoanwu/base-framework/compare/742f865d0672599ba182b16012b7671b114f273f...75189f8787bc51f9cf16ba7b2fdcb735aea2ec15","commits":[{"id":"75189f8787bc51f9cf16ba7b2fdcb735aea2ec15","message":"chore(reports): 刷新三级证据至 cb2a1f0(clean)+ 动态区同步回灌\n\n结构化日志接线后在 clean commit 上重跑取证:\n- 静态 pnpm check:exit 0\n- 真实 DB check:runtime:202 tests / 0 failures、差分 0 differences\n (PG base_framework_rt_cb2a1f0 + Redis db15)\n- 浏览器 check:ui:8 用例 / 0 失败 / 0 跳过\n (PG base_framework_ui_cb2a1f0 + Redis db12,端口经 UI_WEB_PORT/UI_API_PORT 覆盖)\n\n三份报告 provenance 均为 gitSha=cb2a1f0、worktreeDirty=false,动态区同步更新。\n本轮回灌由上一提交新增的 freshness-sha-runtime / freshness-sha-ui 断言强制——\n报告动了而文档没跟上会直接红,不再依赖人肉记得。\n\n作用域不变:仅证明「本机在 cb2a1f0 这个 clean commit 上通过三级门禁」,\n推不出远端已发布或 CI 已拦截(G14 仍 OPEN)。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/base-framework/commit/75189f8787bc51f9cf16ba7b2fdcb735aea2ec15","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-08-31T17:21:01-07:00","added":[],"removed":[],"modified":["CLAUDE.md","reports/conformance-differential.latest.json","reports/conformance-matrix.latest.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-rules.latest.json","reports/governance-status.latest.json","reports/governance.latest.json","reports/migrations.latest.json","reports/naming.latest.json","reports/os-product-compat.latest.json","reports/runtime-acceptance.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/statemachine-write-guard.latest.json","reports/ui-acceptance.latest.json","reports/validation-source.latest.json"]},{"id":"cb2a1f09fde2e86e3a4263b59e3565efaed5b104","message":"feat(observability): NestJS 接结构化日志,与 Fastify 拉平(G20 第一子项)\n\n此前 Fastify 侧是 pino 结构化 JSON,NestJS 全程默认 ConsoleLogger 输出彩色纯文本——\n同一套写链在两后端产出两种不可对齐的日志格式,生产上无法用同一条查询捞两边。\ncheck:dual-backend 是存在性门禁,看不见这层格式差异(G17 行为级盲区的又一实例)。\nG20「无可观测性」里性价比最高的一半其实早就免费存在,只差把另一半接上。\n\n- 新增 common/logger.ts:pino 支撑的 Nest LoggerService,口径与 api-fastify/src/app.ts\n 逐条对齐(同一个 LOG_LEVEL、同样的凭证脱敏路径、production 单行 JSON);\n Nest 传入的 context(类名)映射为结构化字段而非拼进消息串——拼进去就又要靠正则解析。\n- 在 create-app.ts 这个装配单源接线,测试与 bootstrap 共用同一份(禁止 main.ts 另起一套);\n- main.ts 的 4 行 console.log 改走 Logger,否则启动横幅纯文本、其余日志 JSON,同进程两种格式;\n bootstrap catch 保留 console.error 兜底(此时应用可能尚未装配成功)。\n\n顺带修掉一个两后端都有的启动崩溃模式:pino-pretty 是 devDependency,用\n`pnpm install --prod` 部署且 NODE_ENV 未设 production 时它不存在,pino 解析不到\ntransport target 会直接抛错——为一个开发期美化依赖把服务搞得起不来。\n两侧均改为先探测可用性、不可用则降级为 JSON。\n\n验证:\n- production:单行 JSON,context 为结构化字段,Error 序列化为 err{type,message,stack}\n- 开发态:pino-pretty 正常着色\n- 负向:临时移走 node_modules 里的 pino-pretty → 降级输出 JSON 而非崩溃,恢复后复原\n- pnpm check exit 0;pnpm check:runtime exit 0(202 tests、差分 0 differences)\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/base-framework/commit/cb2a1f09fde2e86e3a4263b59e3565efaed5b104","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-08-31T17:18:41-07:00","added":["apps/api-nestjs/src/common/logger.ts"],"removed":[],"modified":["apps/api-fastify/src/app.ts","apps/api-nestjs/package.json","apps/api-nestjs/src/create-app.ts","apps/api-nestjs/src/main.ts","pnpm-lock.yaml"]}],"total_commits":0,"head_commit":{"id":"75189f8787bc51f9cf16ba7b2fdcb735aea2ec15","message":"chore(reports): 刷新三级证据至 cb2a1f0(clean)+ 动态区同步回灌\n\n结构化日志接线后在 clean commit 上重跑取证:\n- 静态 pnpm check:exit 0\n- 真实 DB check:runtime:202 tests / 0 failures、差分 0 differences\n (PG base_framework_rt_cb2a1f0 + Redis db15)\n- 浏览器 check:ui:8 用例 / 0 失败 / 0 跳过\n (PG base_framework_ui_cb2a1f0 + Redis db12,端口经 UI_WEB_PORT/UI_API_PORT 覆盖)\n\n三份报告 provenance 均为 gitSha=cb2a1f0、worktreeDirty=false,动态区同步更新。\n本轮回灌由上一提交新增的 freshness-sha-runtime / freshness-sha-ui 断言强制——\n报告动了而文档没跟上会直接红,不再依赖人肉记得。\n\n作用域不变:仅证明「本机在 cb2a1f0 这个 clean commit 上通过三级门禁」,\n推不出远端已发布或 CI 已拦截(G14 仍 OPEN)。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/base-framework/commit/75189f8787bc51f9cf16ba7b2fdcb735aea2ec15","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-08-31T17:21:01-07:00","added":[],"removed":[],"modified":["CLAUDE.md","reports/conformance-differential.latest.json","reports/conformance-matrix.latest.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-rules.latest.json","reports/governance-status.latest.json","reports/governance.latest.json","reports/migrations.latest.json","reports/naming.latest.json","reports/os-product-compat.latest.json","reports/runtime-acceptance.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/statemachine-write-guard.latest.json","reports/ui-acceptance.latest.json","reports/validation-source.latest.json"]},"repository":{"id":54,"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":"base-framework","full_name":"luoanwu/base-framework","description":"基础框架 monorepo","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":2448,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/base-framework/languages","html_url":"https://gitea.g-hi.com/luoanwu/base-framework","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/base-framework","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/base-framework.git","clone_url":"https://gitea.g-hi.com/luoanwu/base-framework.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-07-03T12:24:18+08:00","updated_at":"2026-09-01T08:04:25+08:00","archived_at":"1970-01-01T08:00:00+08:00","permissions":{"admin":true,"push":true,"pull":true},"has_code":true,"has_issues":true,"internal_tracker":{"enable_time_tracker":true,"allow_only_contributors_to_track_time":true,"enable_issue_dependencies":true},"has_wiki":true,"has_pull_requests":true,"has_projects":true,"projects_mode":"all","has_releases":true,"has_packages":true,"has_actions":true,"ignore_whitespace_conflicts":false,"allow_merge_commits":true,"allow_rebase":true,"allow_rebase_explicit":true,"allow_squash_merge":true,"allow_fast_forward_only_merge":true,"allow_rebase_update":true,"allow_manual_merge":false,"autodetect_manual_merge":false,"default_delete_branch_after_merge":false,"default_merge_style":"merge","default_allow_maintainer_edit":true,"avatar_url":"","internal":false,"mirror_interval":"","object_format_name":"sha1","mirror_updated":"0001-01-01T00:00:00Z","topics":[],"licenses":[]},"pusher":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"sender":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"}}...
|
push
|
2
|
10
|
1788222066
|
1788222486
|
0
|
1788222064
|
1788222578
|
group: governance-${{ github.workflow }}-${{ githu group: governance-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: ${{ github.event_name == 'pull_request' }}
...
|
governance-governance.yml-refs/heads/main
|
0
|
Edit
Delete
|
|
23576
|
fix(ci): checkout 取全历史——浅克隆让 F5 把本仓证据误判为「来自另一个仓库」
|
54
|
5
|
governance.yml
|
19
|
5
|
0
|
refs/heads/main
|
5af8e60ea25ac2d24a90b8f103092f30d96b909a
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"75189f8787bc51f9cf16ba7b2fdcb735aea2ec15","after":"5af8e60ea25ac2d24a90b8f103092f30d96b909a","compare_url":"https://gitea.g-hi.com/luoanwu/base-framework/compare/75189f8787bc51f9cf16ba7b2fdcb735aea2ec15...5af8e60ea25ac2d24a90b8f103092f30d96b909a","commits":[{"id":"5af8e60ea25ac2d24a90b8f103092f30d96b909a","message":"fix(ci): checkout 取全历史——浅克隆让 F5 把本仓证据误判为「来自另一个仓库」\n\n加回 GitHub 远端后跑出第一份真实远端证据,static job 立刻红,但**不是治理违规**:\n\n ✗ [F5] reports/runtime-acceptance.latest.json: provenance.gitSha=cb2a1f0\n 不存在于本仓 git 历史——该证据来自**另一个仓库**\n\nF5 用 `git cat-file -e \u003csha\u003e^{commit}` 校验验收证据是否绑定本仓历史(防移植时照搬\n源项目的「测试跑过了」假证据)。而 actions/checkout@v4 默认 fetch-depth:1 只克隆\ntip 提交——验收证据一旦绑定任何祖先提交(正常工作流必然如此:先跑验收再提交报告),\nF5 就必然误判。三处 checkout 均补 fetch-depth: 0。\n\n本地负向复现:`git clone --depth 1` 后提交数=1,`git cat-file -e cb2a1f0` 找不到,\n与 CI 报错一致;全历史下同一命令通过。\n\n值得记的是:这条缺陷**只有真跑远端 CI 才暴露得出来**——本地永远是全历史,\n门禁正向绿;G14 登记的「远端拦截未验证」正是为防这类盲区而存在。\n上一轮修掉的是 check:os-product 依赖仓外检出(结构性必红),这是它后面藏着的第二个。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/base-framework/commit/5af8e60ea25ac2d24a90b8f103092f30d96b909a","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-08-31T17:29:21-07:00","added":[],"removed":[],"modified":[".github/workflows/governance.yml"]}],"total_commits":0,"head_commit":{"id":"5af8e60ea25ac2d24a90b8f103092f30d96b909a","message":"fix(ci): checkout 取全历史——浅克隆让 F5 把本仓证据误判为「来自另一个仓库」\n\n加回 GitHub 远端后跑出第一份真实远端证据,static job 立刻红,但**不是治理违规**:\n\n ✗ [F5] reports/runtime-acceptance.latest.json: provenance.gitSha=cb2a1f0\n 不存在于本仓 git 历史——该证据来自**另一个仓库**\n\nF5 用 `git cat-file -e \u003csha\u003e^{commit}` 校验验收证据是否绑定本仓历史(防移植时照搬\n源项目的「测试跑过了」假证据)。而 actions/checkout@v4 默认 fetch-depth:1 只克隆\ntip 提交——验收证据一旦绑定任何祖先提交(正常工作流必然如此:先跑验收再提交报告),\nF5 就必然误判。三处 checkout 均补 fetch-depth: 0。\n\n本地负向复现:`git clone --depth 1` 后提交数=1,`git cat-file -e cb2a1f0` 找不到,\n与 CI 报错一致;全历史下同一命令通过。\n\n值得记的是:这条缺陷**只有真跑远端 CI 才暴露得出来**——本地永远是全历史,\n门禁正向绿;G14 登记的「远端拦截未验证」正是为防这类盲区而存在。\n上一轮修掉的是 check:os-product 依赖仓外检出(结构性必红),这是它后面藏着的第二个。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/base-framework/commit/5af8e60ea25ac2d24a90b8f103092f30d96b909a","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-08-31T17:29:21-07:00","added":[],"removed":[],"modified":[".github/workflows/governance.yml"]},"repository":{"id":54,"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":"base-framework","full_name":"luoanwu/base-framework","description":"基础框架 monorepo","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":2630,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/base-framework/languages","html_url":"https://gitea.g-hi.com/luoanwu/base-framework","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/base-framework","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/base-framework.git","clone_url":"https://gitea.g-hi.com/luoanwu/base-framework.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-07-03T12:24:18+08:00","updated_at":"2026-09-01T08:21: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
|
12
|
1788222580
|
1788222671
|
0
|
1788222564
|
1788223084
|
group: governance-${{ github.workflow }}-${{ githu group: governance-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: ${{ github.event_name == 'pull_request' }}
...
|
governance-governance.yml-refs/heads/main
|
0
|
Edit
Delete
|
|
23577
|
fix(gate): 差分门禁自包含——不再依赖磁盘上残留的 contracts dist
|
54
|
5
|
governance.yml
|
20
|
5
|
0
|
refs/heads/main
|
74b464480301493d008b476e72247f7289ccbffb
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"5af8e60ea25ac2d24a90b8f103092f30d96b909a","after":"74b464480301493d008b476e72247f7289ccbffb","compare_url":"https://gitea.g-hi.com/luoanwu/base-framework/compare/5af8e60ea25ac2d24a90b8f103092f30d96b909a...74b464480301493d008b476e72247f7289ccbffb","commits":[{"id":"74b464480301493d008b476e72247f7289ccbffb","message":"fix(gate): 差分门禁自包含——不再依赖磁盘上残留的 contracts dist\n\n远端 CI 第二次真跑,static job 首次转绿,runtime job 接着暴露下一条:\n\n Error: Failed to resolve entry for package \"@repo/contracts\".\n\ncheck:conformance:differential 直接调 vitest(不经 turbo),因此拿不到 turbo 声明的\n`test → build` 依赖;而 contracts 是 TS 项目引用,没有 dist 时 vite 解析包入口即失败。\n本地长期通过是因为先跑过 pnpm check 把 dist 留在磁盘上——门禁被环境残留掩盖,\n正是本仓「静态门禁必须自包含」纪律要防的形态。\n\n修复时踩到第二层:contracts 的 tsconfig 是 composite(增量),tsbuildinfo 还在而 dist\n已被删时,`tsc -p` 会认为「一切最新」而**不产出任何文件**——构建退出码 0、dist 依旧为空。\n故重建前先清 tsbuildinfo,并在构建后断言 dist/index.js 真的存在,否则显式报错。\n\n负向验证:`rm -rf packages/contracts/dist packages/contracts/tsconfig.tsbuildinfo`\n后直接跑 check:conformance:differential → 自动重建并通过\n(7 checkpoints × 2 backends,0 differences)。\n\n本地:pnpm check exit 0;pnpm check:runtime exit 0。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/base-framework/commit/74b464480301493d008b476e72247f7289ccbffb","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-08-31T17:36:59-07:00","added":[],"removed":[],"modified":["scripts/check-conformance-differential.mjs"]}],"total_commits":0,"head_commit":{"id":"74b464480301493d008b476e72247f7289ccbffb","message":"fix(gate): 差分门禁自包含——不再依赖磁盘上残留的 contracts dist\n\n远端 CI 第二次真跑,static job 首次转绿,runtime job 接着暴露下一条:\n\n Error: Failed to resolve entry for package \"@repo/contracts\".\n\ncheck:conformance:differential 直接调 vitest(不经 turbo),因此拿不到 turbo 声明的\n`test → build` 依赖;而 contracts 是 TS 项目引用,没有 dist 时 vite 解析包入口即失败。\n本地长期通过是因为先跑过 pnpm check 把 dist 留在磁盘上——门禁被环境残留掩盖,\n正是本仓「静态门禁必须自包含」纪律要防的形态。\n\n修复时踩到第二层:contracts 的 tsconfig 是 composite(增量),tsbuildinfo 还在而 dist\n已被删时,`tsc -p` 会认为「一切最新」而**不产出任何文件**——构建退出码 0、dist 依旧为空。\n故重建前先清 tsbuildinfo,并在构建后断言 dist/index.js 真的存在,否则显式报错。\n\n负向验证:`rm -rf packages/contracts/dist packages/contracts/tsconfig.tsbuildinfo`\n后直接跑 check:conformance:differential → 自动重建并通过\n(7 checkpoints × 2 backends,0 differences)。\n\n本地:pnpm check exit 0;pnpm check:runtime exit 0。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/base-framework/commit/74b464480301493d008b476e72247f7289ccbffb","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-08-31T17:36:59-07:00","added":[],"removed":[],"modified":["scripts/check-conformance-differential.mjs"]},"repository":{"id":54,"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":"base-framework","full_name":"luoanwu/base-framework","description":"基础框架 monorepo","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":2634,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/base-framework/languages","html_url":"https://gitea.g-hi.com/luoanwu/base-framework","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/base-framework","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/base-framework.git","clone_url":"https://gitea.g-hi.com/luoanwu/base-framework.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-07-03T12:24:18+08:00","updated_at":"2026-09-01T08:29: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
|
12
|
1788223086
|
1788223125
|
0
|
1788223021
|
1788223135
|
group: governance-${{ github.workflow }}-${{ githu group: governance-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: ${{ github.event_name == 'pull_request' }}
...
|
governance-governance.yml-refs/heads/main
|
0
|
Edit
Delete
|
|
23578
|
fix(gate): 测试数解析先剥 ANSI——地板校验在 CI 上恒读 0(假红)
|
54
|
5
|
governance.yml
|
21
|
5
|
0
|
refs/heads/main
|
5f156175e6f2397c334fcd3eb5cde4e45423b68b
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"74b464480301493d008b476e72247f7289ccbffb","after":"5f156175e6f2397c334fcd3eb5cde4e45423b68b","compare_url":"https://gitea.g-hi.com/luoanwu/base-framework/compare/74b464480301493d008b476e72247f7289ccbffb...5f156175e6f2397c334fcd3eb5cde4e45423b68b","commits":[{"id":"5f156175e6f2397c334fcd3eb5cde4e45423b68b","message":"fix(gate): 测试数解析先剥 ANSI——地板校验在 CI 上恒读 0(假红)\n\n远端第三次真跑:static job 绿,runtime job 报\n\n Tests passed regressed: expected \u003e= 202, got 0.\n\n但下载 CI 上传的证据 artifact 看,test 步骤 status=0、4 个 turbo 任务全成功、\nFastify 明明 58 passed——测试全跑过了,是 runner 的**解析**失效。\n\n根因:GitHub Actions 支持颜色,vitest/turbo 因此输出带色汇总行,\"Tests\" 与数字之间\n夹着 ANSI 转义序列,`/Tests\\s+(\\d+)\\s+passed/` 匹配不到。本地非 TTY 无色所以一直有效——\n这条地板在本地有牙、在 CI 上恒读 0,属于「同一门禁在两个环境语义不同」。\n方向上它是 fail-closed(0 \u003c 202 判红)而非假绿,但仍是假红,会把真实回归淹没在噪声里。\n\ncountPassedTests 改为先 stripAnsi 再匹配。\n验证:用真实 CI 那行带色文本喂解析器,剥离前 0、剥离后 58;\n本地 check:runtime 仍读到 202(exit 0)。\n\nUI runner 不受影响:它读 Playwright 的 JSON 统计,不解析终端文本。\n\n这是加回 GitHub 远端后暴露的第三条「只有远端才看得见」的缺陷\n(前两条:checkout 浅克隆让 F5 误判、差分门禁依赖磁盘残留的 contracts dist)。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/base-framework/commit/5f156175e6f2397c334fcd3eb5cde4e45423b68b","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-08-31T17:43:13-07:00","added":[],"removed":[],"modified":["scripts/check-runtime-acceptance.mjs"]}],"total_commits":0,"head_commit":{"id":"5f156175e6f2397c334fcd3eb5cde4e45423b68b","message":"fix(gate): 测试数解析先剥 ANSI——地板校验在 CI 上恒读 0(假红)\n\n远端第三次真跑:static job 绿,runtime job 报\n\n Tests passed regressed: expected \u003e= 202, got 0.\n\n但下载 CI 上传的证据 artifact 看,test 步骤 status=0、4 个 turbo 任务全成功、\nFastify 明明 58 passed——测试全跑过了,是 runner 的**解析**失效。\n\n根因:GitHub Actions 支持颜色,vitest/turbo 因此输出带色汇总行,\"Tests\" 与数字之间\n夹着 ANSI 转义序列,`/Tests\\s+(\\d+)\\s+passed/` 匹配不到。本地非 TTY 无色所以一直有效——\n这条地板在本地有牙、在 CI 上恒读 0,属于「同一门禁在两个环境语义不同」。\n方向上它是 fail-closed(0 \u003c 202 判红)而非假绿,但仍是假红,会把真实回归淹没在噪声里。\n\ncountPassedTests 改为先 stripAnsi 再匹配。\n验证:用真实 CI 那行带色文本喂解析器,剥离前 0、剥离后 58;\n本地 check:runtime 仍读到 202(exit 0)。\n\nUI runner 不受影响:它读 Playwright 的 JSON 统计,不解析终端文本。\n\n这是加回 GitHub 远端后暴露的第三条「只有远端才看得见」的缺陷\n(前两条:checkout 浅克隆让 F5 误判、差分门禁依赖磁盘残留的 contracts dist)。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/base-framework/commit/5f156175e6f2397c334fcd3eb5cde4e45423b68b","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-08-31T17:43:13-07:00","added":[],"removed":[],"modified":["scripts/check-runtime-acceptance.mjs"]},"repository":{"id":54,"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":"base-framework","full_name":"luoanwu/base-framework","description":"基础框架 monorepo","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":2640,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/base-framework/languages","html_url":"https://gitea.g-hi.com/luoanwu/base-framework","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/base-framework","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/base-framework.git","clone_url":"https://gitea.g-hi.com/luoanwu/base-framework.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-07-03T12:24:18+08:00","updated_at":"2026-09-01T08:37:01+08:00","archived_at":"1970-01-01T08:00:00+08:00","permissions":{"admin":true,"push":true,"pull":true},"has_code":true,"has_issues":true,"internal_tracker":{"enable_time_tracker":true,"allow_only_contributors_to_track_time":true,"enable_issue_dependencies":true},"has_wiki":true,"has_pull_requests":true,"has_projects":true,"projects_mode":"all","has_releases":true,"has_packages":true,"has_actions":true,"ignore_whitespace_conflicts":false,"allow_merge_commits":true,"allow_rebase":true,"allow_rebase_explicit":true,"allow_squash_merge":true,"allow_fast_forward_only_merge":true,"allow_rebase_update":true,"allow_manual_merge":false,"autodetect_manual_merge":false,"default_delete_branch_after_merge":false,"default_merge_style":"merge","default_allow_maintainer_edit":true,"avatar_url":"","internal":false,"mirror_interval":"","object_format_name":"sha1","mirror_updated":"0001-01-01T00:00:00Z","topics":[],"licenses":[]},"pusher":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"sender":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"}}...
|
push
|
2
|
10
|
1788223469
|
1788223508
|
0
|
1788223468
|
1788223517
|
group: governance-${{ github.workflow }}-${{ githu group: governance-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: ${{ github.event_name == 'pull_request' }}
...
|
governance-governance.yml-refs/heads/main
|
0
|
Edit
Delete
|
|
23579
|
docs(governance): 回灌首份远端 CI 绿盘证据 + 三级证据刷新至 5f15617
|
54
|
5
|
governance.yml
|
22
|
5
|
0
|
refs/heads/main
|
b1695a6780efbc95449a553d313599695c0b22ab
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"5f156175e6f2397c334fcd3eb5cde4e45423b68b","after":"b1695a6780efbc95449a553d313599695c0b22ab","compare_url":"https://gitea.g-hi.com/luoanwu/base-framework/compare/5f156175e6f2397c334fcd3eb5cde4e45423b68b...b1695a6780efbc95449a553d313599695c0b22ab","commits":[{"id":"b1695a6780efbc95449a553d313599695c0b22ab","message":"docs(governance): 回灌首份远端 CI 绿盘证据 + 三级证据刷新至 5f15617\n\n远端证据(G14 部分推进,**未闭环**)\nGitHub 远端已加回(github → laoluojuhai/base-framework,私有仓)。\n在 5f15617 上三个 job 全绿:Static governance / Runtime and UI acceptance /\nAggregate same-SHA governance evidence\nrun: https://github.com/laoluojuhai/base-framework/actions/runs/33455966984\n该 run 的 headSha 与本地 HEAD 逐字符对齐。这是本仓历史上第一次远端 CI 绿——\n此前每一次远端运行都是 failure(最近一次 2026-08-26,正是 check:os-product 并入\npnpm check 那一提交)。\n\n三条「只有远端才看得见」的缺陷已在本轮依次修掉,均已单独提交并在本条登记:\n① checkout 浅克隆 → F5 把本仓证据误判为「来自另一个仓库」\n② 差分门禁依赖磁盘残留的 contracts dist(外加 composite 增量陷阱)\n③ 测试数地板正则未剥 ANSI,CI 下恒读 0\n共同点:本地全绿、远端必红——正是 G14「远端拦截未验证」这条缺口存在的意义。\n\n⚠️ ci-gate 仍不标 GREEN:required checks / 分支保护未配置,受控失败 PR 未做。\n「门禁能跑绿」推不出「违规会被挡住」,缺这两项不得宣称 PR 已被机器拦截。\n\n三级证据刷新\n静态 exit 0、runtime 202 tests / 差分 0 differences、UI 8 用例,\n三份报告 provenance 均为 gitSha=5f15617、worktreeDirty=false。\n本轮回灌过程中 freshness-sha-runtime 断言真的挡了我一次(报告已刷到 74b4644 而\n动态区仍写 cb2a1f0),按其要求重跑取证后才通过——新门禁有牙。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/base-framework/commit/b1695a6780efbc95449a553d313599695c0b22ab","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-08-31T17:52:26-07:00","added":[],"removed":[],"modified":["CLAUDE.md","reports/conformance-differential.latest.json","reports/conformance-matrix.latest.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-rules.latest.json","reports/governance-status.latest.json","reports/governance.latest.json","reports/migrations.latest.json","reports/naming.latest.json","reports/os-product-compat.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":"b1695a6780efbc95449a553d313599695c0b22ab","message":"docs(governance): 回灌首份远端 CI 绿盘证据 + 三级证据刷新至 5f15617\n\n远端证据(G14 部分推进,**未闭环**)\nGitHub 远端已加回(github → laoluojuhai/base-framework,私有仓)。\n在 5f15617 上三个 job 全绿:Static governance / Runtime and UI acceptance /\nAggregate same-SHA governance evidence\nrun: https://github.com/laoluojuhai/base-framework/actions/runs/33455966984\n该 run 的 headSha 与本地 HEAD 逐字符对齐。这是本仓历史上第一次远端 CI 绿——\n此前每一次远端运行都是 failure(最近一次 2026-08-26,正是 check:os-product 并入\npnpm check 那一提交)。\n\n三条「只有远端才看得见」的缺陷已在本轮依次修掉,均已单独提交并在本条登记:\n① checkout 浅克隆 → F5 把本仓证据误判为「来自另一个仓库」\n② 差分门禁依赖磁盘残留的 contracts dist(外加 composite 增量陷阱)\n③ 测试数地板正则未剥 ANSI,CI 下恒读 0\n共同点:本地全绿、远端必红——正是 G14「远端拦截未验证」这条缺口存在的意义。\n\n⚠️ ci-gate 仍不标 GREEN:required checks / 分支保护未配置,受控失败 PR 未做。\n「门禁能跑绿」推不出「违规会被挡住」,缺这两项不得宣称 PR 已被机器拦截。\n\n三级证据刷新\n静态 exit 0、runtime 202 tests / 差分 0 differences、UI 8 用例,\n三份报告 provenance 均为 gitSha=5f15617、worktreeDirty=false。\n本轮回灌过程中 freshness-sha-runtime 断言真的挡了我一次(报告已刷到 74b4644 而\n动态区仍写 cb2a1f0),按其要求重跑取证后才通过——新门禁有牙。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/base-framework/commit/b1695a6780efbc95449a553d313599695c0b22ab","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-08-31T17:52:26-07:00","added":[],"removed":[],"modified":["CLAUDE.md","reports/conformance-differential.latest.json","reports/conformance-matrix.latest.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-rules.latest.json","reports/governance-status.latest.json","reports/governance.latest.json","reports/migrations.latest.json","reports/naming.latest.json","reports/os-product-compat.latest.json","reports/runtime-acceptance.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/statemachine-write-guard.latest.json","reports/ui-acceptance.latest.json","reports/validation-source.latest.json"]},"repository":{"id":54,"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":"base-framework","full_name":"luoanwu/base-framework","description":"基础框架 monorepo","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":2646,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/base-framework/languages","html_url":"https://gitea.g-hi.com/luoanwu/base-framework","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/base-framework","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/base-framework.git","clone_url":"https://gitea.g-hi.com/luoanwu/base-framework.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-07-03T12:24:18+08:00","updated_at":"2026-09-01T08:44: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
|
10
|
1788223951
|
1788223991
|
0
|
1788223950
|
1788224001
|
group: governance-${{ github.workflow }}-${{ githu group: governance-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: ${{ github.event_name == 'pull_request' }}
...
|
governance-governance.yml-refs/heads/main
|
0
|
Edit
Delete
|
|
23606
|
chore(reports): refresh clean static evidence @ 28 chore(reports): refresh clean static evidence @ 286eb95(14 项门禁 + kernel profile)...
|
54
|
5
|
governance.yml
|
23
|
5
|
0
|
refs/heads/main
|
7135258b78d5b623099713b2bd3292af46b6329d
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"b1695a6780efbc95449a553d313599695c0b22ab","after":"7135258b78d5b623099713b2bd3292af46b6329d","compare_url":"https://gitea.g-hi.com/luoanwu/base-framework/compare/b1695a6780efbc95449a553d313599695c0b22ab...7135258b78d5b623099713b2bd3292af46b6329d","commits":[{"id":"7135258b78d5b623099713b2bd3292af46b6329d","message":"chore(reports): refresh clean static evidence @ 286eb95(14 项门禁 + kernel profile)\n\nCo-Authored-By: Claude Fable 5.1 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/base-framework/commit/7135258b78d5b623099713b2bd3292af46b6329d","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-09-02T18:59:16-07:00","added":[],"removed":[],"modified":["CLAUDE.md","reports/agent-adapters.latest.json","reports/conformance-matrix.latest.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-profile-kernel.latest.json","reports/governance-rules.latest.json","reports/governance-status.latest.json","reports/governance.latest.json","reports/migrations.latest.json","reports/naming.latest.json","reports/os-product-compat.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/statemachine-write-guard.latest.json","reports/validation-source.latest.json"]},{"id":"286eb956f5ee3634246ef80235af45a628635af9","message":"chore(reports): 刷新三级证据至 1245400(clean;runtime 207 / UI 9 / 差分 8×2 零差异)+ 地板 testsPassed 203→207、uiTestsPassed 8→9\n\n动态区 runtime/UI 行回灌到 clean @ 1245400;own-test-cases 203。同日 aeed741 顶层 runtime 红 5 例\n已由 C22 修复并在 1245400 重跑转绿。\n\nCo-Authored-By: Claude Fable 5.1 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/base-framework/commit/286eb956f5ee3634246ef80235af45a628635af9","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-09-02T18:59:08-07:00","added":[],"removed":[],"modified":["CLAUDE.md","reports/baseline.json","reports/conformance-differential.latest.json","reports/runtime-acceptance.latest.json","reports/ui-acceptance.latest.json"]},{"id":"1245400747afade64c6cda83d362021e0b9d69c2","message":"fix(realtime): Redis pub/sub 连接 ready 后才交付——修复非 0 逻辑库上订阅约 50% 建不起来(C22)\n\naeed741 的 clean-SHA 顶层 check:runtime 红 5 例(NestJS realtime.command/subscription\n`waitUntil timed out`),单独复跑 3 轮中 2 轮仍红,不是并行噪声。`DEBUG=ioredis:*` 抓到:\nSUB 连接裸建(lazyConnect:false)后立即被 EventBusService.onModuleInit `subscribe()`,\nioredis 立刻置订阅模式并把 subscribe 排进离线队列,握手期 `SELECT 9` / `INFO` 就绪检查被\n客户端以 \"Connection in subscriber mode\" 拒绝 → 判致命错误重连 → 订阅在窗口内从未建立。\n只有 REDIS_URL 带非 0 db 才发 SELECT,CI(db0)从不复现,本机验收切到 db9 后开始「偶发」。\nFastify plugins/redis.ts 同一形态(窗口更窄)。\n\n- 两后端 pub/sub 改 lazyConnect + 显式 await connect()(NestJS 异步 useFactory / Fastify\n Promise.all),ready 后才交付;启动期 Redis 不可达即拒绝启动;挂 error 监听进结构化日志\n- connectionName = api-\u003cbackend\u003e-realtime-\u003crole\u003e-\u003cpid\u003e,CLIENT LIST 可按角色定位\n- 两后端 http.acceptance 各 +1:CLIENT LIST 断言逻辑库 = REDIS_URL 且 SUB sub=1、status ready\n- 证据:修复后 realtime.command 定向 10/10 绿、0 条 ioredis 未处理错误;负向改回旧写法\n readiness 用例 5 轮中 2 轮红(expected 'reconnecting' to be 'ready')\n- G18 复跑判责纪律补:偶发红必须至少抓一次协议级失败现场\n\nCo-Authored-By: Claude Fable 5.1 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/base-framework/commit/1245400747afade64c6cda83d362021e0b9d69c2","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-09-02T18:55:51-07:00","added":[],"removed":[],"modified":["CLAUDE.md","apps/api-fastify/src/plugins/redis.ts","apps/api-fastify/test/http.acceptance.test.ts","apps/api-nestjs/src/redis/redis.module.ts","apps/api-nestjs/test/http.acceptance.test.ts","docs/governance-experience.md","reports/agent-adapters.latest.json","reports/baseline.json","reports/conformance-matrix.latest.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-rules.latest.json","reports/governance-status.latest.json","reports/governance.latest.json","reports/migrations.latest.json","reports/naming.latest.json","reports/os-product-compat.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/statemachine-write-guard.latest.json","reports/validation-source.latest.json"]},{"id":"aeed74154025d55fe8e9f481d473c153de92dd63","message":"feat(users): 唯一键冲突映射为稳定 409 DUPLICATE_EMAIL + G21 多代理适配器同源门禁\n\nC21:`@@unique([tenantId,email])` 的 Prisma P2002 此前在 NestJS/Fastify 都没有映射,\n重复邮箱直接 500(修复前两后端新用例均 `expected 500 to be 409` 实锤);NestJS users 404\n还回显资源 id 与框架元数据,与 orders/Fastify 不同体。\n- contracts 新增 `USER_ERROR_CODES.DUPLICATE_EMAIL`(单源)\n- 两后端幂等窄捕获只认 P2002 → 409 `{ message, code }`;Fastify 伪造 P2025 裸 Error 改为\n 类型化 UserNotFoundError/DuplicateUserEmailError;NestJS users 404 改稳定体\n- 两后端 http.acceptance 各 +1 用例(POST/PATCH 409、outbox 无副作用、他租户同 email 201)\n- conformance 矩阵 +HTTP-CONFLICT-001(8→9)、差分 +DIFF-USER-CONFLICT-001(7→8,0 differences)\n- UI +1 用例:重复邮箱在真实页面显示稳定错误、列表不出现第二条\n\nG21:新增 `pnpm check:agent-adapters`(接入 pnpm check / Kernel profile / 棘轮 / 规则\nGOV-AGENT-ADAPTER-001,registryVersion 3→4):.claude/.agents 同名技能在 doctrine 名与\n画像路径替换之外逐字节比对,单侧技能须登记理由;补齐 business-module-intake Codex 侧副本,\n技能内对不存在技能的硬引用改为「有则调用、无则手工等价」。负向三条(改一行/删单侧/多文件)均红。\n\n基线收紧:ownTestCases 198→201、conformanceMatrixCases 8→9、新增 agentAdapter* 两项。\nruntime/UI 地板待 clean SHA 实跑后回灌。\n\nCo-Authored-By: Claude Fable 5.1 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/base-framework/commit/aeed74154025d55fe8e9f481d473c153de92dd63","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-09-02T18:22:32-07:00","added":[".agents/skills/business-module-intake/SKILL.md","reports/agent-adapters.latest.json","scripts/check-agent-adapters.mjs"],"removed":[],"modified":[".claude/skills/business-module-intake/SKILL.md","CLAUDE.md","README.md","apps/api-fastify/src/modules/users/users.service.ts","apps/api-fastify/src/routes/users.ts","apps/api-fastify/test/http.acceptance.test.ts","apps/api-nestjs/src/users/users.service.ts","apps/api-nestjs/test/conformance.differential.ts","apps/api-nestjs/test/http.acceptance.test.ts","apps/web/e2e/acceptance.spec.ts","apps/web/src/components/UsersPanel.tsx","conformance.matrix.json","docs/governance-experience.md","docs/standards/api-standard.md","governance.rules.json","package.json","packages/contracts/src/user.ts","reports/baseline.json","reports/conformance-differential.latest.json","reports/conformance-matrix.latest.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-rules.latest.json","reports/governance-status.latest.json","reports/governance.latest.json","reports/migrations.latest.json","reports/naming.latest.json","reports/os-product-compat.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/statemachine-write-guard.latest.json","reports/validation-source.latest.json","scripts/check-governance-profile.mjs","scripts/governance-report.mjs"]},{"id":"269497f441cafaa4501126c4632b5f02ca513233","message":"chore(reports): refresh clean static evidence\n","url":"https://gitea.g-hi.com/luoanwu/base-framework/commit/269497f441cafaa4501126c4632b5f02ca513233","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-09-02T09:59:04-07:00","added":[],"removed":[],"modified":["reports/conformance-matrix.latest.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-rules.latest.json","reports/governance-status.latest.json","reports/governance.latest.json","reports/migrations.latest.json","reports/naming.latest.json","reports/os-product-compat.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/statemachine-write-guard.latest.json","reports/validation-source.latest.json"]}],"total_commits":0,"head_commit":{"id":"7135258b78d5b623099713b2bd3292af46b6329d","message":"chore(reports): refresh clean static evidence @ 286eb95(14 项门禁 + kernel profile)\n\nCo-Authored-By: Claude Fable 5.1 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/base-framework/commit/7135258b78d5b623099713b2bd3292af46b6329d","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-09-02T18:59:16-07:00","added":[],"removed":[],"modified":["CLAUDE.md","reports/agent-adapters.latest.json","reports/conformance-matrix.latest.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-profile-kernel.latest.json","reports/governance-rules.latest.json","reports/governance-status.latest.json","reports/governance.latest.json","reports/migrations.latest.json","reports/naming.latest.json","reports/os-product-compat.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/statemachine-write-guard.latest.json","reports/validation-source.latest.json"]},"repository":{"id":54,"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":"base-framework","full_name":"luoanwu/base-framework","description":"基础框架 monorepo","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":2706,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/base-framework/languages","html_url":"https://gitea.g-hi.com/luoanwu/base-framework","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/base-framework","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/base-framework.git","clone_url":"https://gitea.g-hi.com/luoanwu/base-framework.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-07-03T12:24:18+08:00","updated_at":"2026-09-01T08:52: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
|
10
|
1788401213
|
1788401267
|
0
|
1788401211
|
1788401278
|
group: governance-${{ github.workflow }}-${{ githu group: governance-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: ${{ github.event_name == 'pull_request' }}
...
|
governance-governance.yml-refs/heads/main
|
0
|
Edit
Delete
|
|
23607
|
fix(gate): G15-B 独占探针真关闭 + 父子探针互认——首个含 G15-B 的远端 r fix(gate): G15-B 独占探针真关闭 + 父子探针互认——首个含 G15-B 的远端 run 红在差分 preflight(C23)...
|
54
|
5
|
governance.yml
|
24
|
5
|
0
|
refs/heads/main
|
f17d34a463e70366161f4603e53a4b2800e9a241
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"7135258b78d5b623099713b2bd3292af46b6329d","after":"f17d34a463e70366161f4603e53a4b2800e9a241","compare_url":"https://gitea.g-hi.com/luoanwu/base-framework/compare/7135258b78d5b623099713b2bd3292af46b6329d...f17d34a463e70366161f4603e53a4b2800e9a241","commits":[{"id":"f17d34a463e70366161f4603e53a4b2800e9a241","message":"fix(gate): G15-B 独占探针真关闭 + 父子探针互认——首个含 G15-B 的远端 run 红在差分 preflight(C23)\n\n推送 7135258 后 GitHub run 33706371355:Static governance 绿,Runtime and UI acceptance 在\ncheck:runtime 第 4 步 conformance-differential 红:「验收 Redis 逻辑库 0 已有 1 个外部连接:\n172.18.0.1:53838 cmd=client|list」。那条连接是顶层 runner 自己几秒前的独占探针:redisExec 收完\n回复只 socket.end() 半关闭,GitHub 的 Redis service 经 docker 网桥暴露,服务端连接残留,子门禁\n把它当成外部占用。本机探针不 SELECT 始终落 db0、验收用 db9,所以三级全绿也撞不上。\n\n- redisExec:队尾追加 QUIT,收到回复后 destroy();服务端先关也按成功收口\n- 探针 CLIENT SETNAME governance-acceptance-probe-\u003cpid\u003e,foreignClientsOnDb 按前缀排除,\n 父 runner 与派生子门禁各探一次时互认(名字不带项目名,派生仓零改动沿用)\n- 本机 db10 五项正/负向:无名残留连接仍被拒、具名探针被忽略、探针返回后 CLIENT LIST 不再列出自身、\n 解析器只保留真 worker;本机 check:runtime 冒烟 207 tests 通过\n- doctrine:发布状态快照更新为两远端 7135258、G14 登记第四条只有远端才看得见的缺陷、ci-gate 行、C23 索引\n\nCo-Authored-By: Claude Fable 5.1 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/base-framework/commit/f17d34a463e70366161f4603e53a4b2800e9a241","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-09-02T19:17:03-07:00","added":[],"removed":[],"modified":["CLAUDE.md","docs/governance-experience.md","reports/agent-adapters.latest.json","reports/conformance-matrix.latest.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-rules.latest.json","reports/governance-status.latest.json","reports/governance.latest.json","reports/migrations.latest.json","reports/naming.latest.json","reports/os-product-compat.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/statemachine-write-guard.latest.json","reports/validation-source.latest.json","scripts/lib/acceptance-base-guard.mjs"]}],"total_commits":0,"head_commit":{"id":"f17d34a463e70366161f4603e53a4b2800e9a241","message":"fix(gate): G15-B 独占探针真关闭 + 父子探针互认——首个含 G15-B 的远端 run 红在差分 preflight(C23)\n\n推送 7135258 后 GitHub run 33706371355:Static governance 绿,Runtime and UI acceptance 在\ncheck:runtime 第 4 步 conformance-differential 红:「验收 Redis 逻辑库 0 已有 1 个外部连接:\n172.18.0.1:53838 cmd=client|list」。那条连接是顶层 runner 自己几秒前的独占探针:redisExec 收完\n回复只 socket.end() 半关闭,GitHub 的 Redis service 经 docker 网桥暴露,服务端连接残留,子门禁\n把它当成外部占用。本机探针不 SELECT 始终落 db0、验收用 db9,所以三级全绿也撞不上。\n\n- redisExec:队尾追加 QUIT,收到回复后 destroy();服务端先关也按成功收口\n- 探针 CLIENT SETNAME governance-acceptance-probe-\u003cpid\u003e,foreignClientsOnDb 按前缀排除,\n 父 runner 与派生子门禁各探一次时互认(名字不带项目名,派生仓零改动沿用)\n- 本机 db10 五项正/负向:无名残留连接仍被拒、具名探针被忽略、探针返回后 CLIENT LIST 不再列出自身、\n 解析器只保留真 worker;本机 check:runtime 冒烟 207 tests 通过\n- doctrine:发布状态快照更新为两远端 7135258、G14 登记第四条只有远端才看得见的缺陷、ci-gate 行、C23 索引\n\nCo-Authored-By: Claude Fable 5.1 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/base-framework/commit/f17d34a463e70366161f4603e53a4b2800e9a241","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-09-02T19:17:03-07:00","added":[],"removed":[],"modified":["CLAUDE.md","docs/governance-experience.md","reports/agent-adapters.latest.json","reports/conformance-matrix.latest.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-rules.latest.json","reports/governance-status.latest.json","reports/governance.latest.json","reports/migrations.latest.json","reports/naming.latest.json","reports/os-product-compat.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/statemachine-write-guard.latest.json","reports/validation-source.latest.json","scripts/lib/acceptance-base-guard.mjs"]},"repository":{"id":54,"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":"base-framework","full_name":"luoanwu/base-framework","description":"基础框架 monorepo","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":2940,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/base-framework/languages","html_url":"https://gitea.g-hi.com/luoanwu/base-framework","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/base-framework","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/base-framework.git","clone_url":"https://gitea.g-hi.com/luoanwu/base-framework.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-07-03T12:24:18+08:00","updated_at":"2026-09-03T10:06:52+08:00","archived_at":"1970-01-01T08:00:00+08:00","permissions":{"admin":true,"push":true,"pull":true},"has_code":true,"has_issues":true,"internal_tracker":{"enable_time_tracker":true,"allow_only_contributors_to_track_time":true,"enable_issue_dependencies":true},"has_wiki":true,"has_pull_requests":true,"has_projects":true,"projects_mode":"all","has_releases":true,"has_packages":true,"has_actions":true,"ignore_whitespace_conflicts":false,"allow_merge_commits":true,"allow_rebase":true,"allow_rebase_explicit":true,"allow_squash_merge":true,"allow_fast_forward_only_merge":true,"allow_rebase_update":true,"allow_manual_merge":false,"autodetect_manual_merge":false,"default_delete_branch_after_merge":false,"default_merge_style":"merge","default_allow_maintainer_edit":true,"avatar_url":"","internal":false,"mirror_interval":"","object_format_name":"sha1","mirror_updated":"0001-01-01T00:00:00Z","topics":[],"licenses":[]},"pusher":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"sender":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"}}...
|
push
|
2
|
10
|
1788401828
|
1788402247
|
0
|
1788401827
|
1788402256
|
group: governance-${{ github.workflow }}-${{ githu group: governance-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: ${{ github.event_name == 'pull_request' }}
...
|
governance-governance.yml-refs/heads/main
|
0
|
Edit
Delete
|
|
23608
|
docs(governance): 回灌远端绿盘——f17d34a 的 GitHub run 337 docs(governance): 回灌远端绿盘——f17d34a 的 GitHub run 33707057068 三 job 全绿,两远端对齐...
|
54
|
5
|
governance.yml
|
25
|
5
|
0
|
refs/heads/main
|
06b8b98f483723103dcd01449e6ec6772ad10c13
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"f17d34a463e70366161f4603e53a4b2800e9a241","after":"06b8b98f483723103dcd01449e6ec6772ad10c13","compare_url":"https://gitea.g-hi.com/luoanwu/base-framework/compare/f17d34a463e70366161f4603e53a4b2800e9a241...06b8b98f483723103dcd01449e6ec6772ad10c13","commits":[{"id":"06b8b98f483723103dcd01449e6ec6772ad10c13","message":"docs(governance): 回灌远端绿盘——f17d34a 的 GitHub run 33707057068 三 job 全绿,两远端对齐\n\nCo-Authored-By: Claude Fable 5.1 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/base-framework/commit/06b8b98f483723103dcd01449e6ec6772ad10c13","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-09-02T19:23:08-07:00","added":[],"removed":[],"modified":["CLAUDE.md"]}],"total_commits":0,"head_commit":{"id":"06b8b98f483723103dcd01449e6ec6772ad10c13","message":"docs(governance): 回灌远端绿盘——f17d34a 的 GitHub run 33707057068 三 job 全绿,两远端对齐\n\nCo-Authored-By: Claude Fable 5.1 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/base-framework/commit/06b8b98f483723103dcd01449e6ec6772ad10c13","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-09-02T19:23:08-07:00","added":[],"removed":[],"modified":["CLAUDE.md"]},"repository":{"id":54,"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":"base-framework","full_name":"luoanwu/base-framework","description":"基础框架 monorepo","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":3032,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/base-framework/languages","html_url":"https://gitea.g-hi.com/luoanwu/base-framework","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/base-framework","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/base-framework.git","clone_url":"https://gitea.g-hi.com/luoanwu/base-framework.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-07-03T12:24:18+08:00","updated_at":"2026-09-03T10:17:07+08:00","archived_at":"1970-01-01T08:00:00+08:00","permissions":{"admin":true,"push":true,"pull":true},"has_code":true,"has_issues":true,"internal_tracker":{"enable_time_tracker":true,"allow_only_contributors_to_track_time":true,"enable_issue_dependencies":true},"has_wiki":true,"has_pull_requests":true,"has_projects":true,"projects_mode":"all","has_releases":true,"has_packages":true,"has_actions":true,"ignore_whitespace_conflicts":false,"allow_merge_commits":true,"allow_rebase":true,"allow_rebase_explicit":true,"allow_squash_merge":true,"allow_fast_forward_only_merge":true,"allow_rebase_update":true,"allow_manual_merge":false,"autodetect_manual_merge":false,"default_delete_branch_after_merge":false,"default_merge_style":"merge","default_allow_maintainer_edit":true,"avatar_url":"","internal":false,"mirror_interval":"","object_format_name":"sha1","mirror_updated":"0001-01-01T00:00:00Z","topics":[],"licenses":[]},"pusher":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"sender":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"}}...
|
push
|
2
|
12
|
1788402257
|
1788402300
|
0
|
1788402192
|
1788402309
|
group: governance-${{ github.workflow }}-${{ githu group: governance-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: ${{ github.event_name == 'pull_request' }}
...
|
governance-governance.yml-refs/heads/main
|
0
|
Edit
Delete
|
|
23809
|
chore(reports): refresh clean static evidence @ ad chore(reports): refresh clean static evidence @ ad327f9(含版本轴断言)...
|
54
|
5
|
governance.yml
|
26
|
5
|
0
|
refs/heads/main
|
b4e9d5a3b65afe4e08327bae6da99029b2faeffd
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"06b8b98f483723103dcd01449e6ec6772ad10c13","after":"b4e9d5a3b65afe4e08327bae6da99029b2faeffd","compare_url":"https://gitea.g-hi.com/luoanwu/base-framework/compare/06b8b98f483723103dcd01449e6ec6772ad10c13...b4e9d5a3b65afe4e08327bae6da99029b2faeffd","commits":[{"id":"b4e9d5a3b65afe4e08327bae6da99029b2faeffd","message":"chore(reports): refresh clean static evidence @ ad327f9(含版本轴断言)\n\nCo-Authored-By: Claude Fable 5.1 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/base-framework/commit/b4e9d5a3b65afe4e08327bae6da99029b2faeffd","author":{"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:15:03-07:00","added":[],"removed":[],"modified":["reports/agent-adapters.latest.json","reports/conformance-matrix.latest.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-rules.latest.json","reports/governance-status.latest.json","reports/governance.latest.json","reports/migrations.latest.json","reports/naming.latest.json","reports/os-product-compat.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/statemachine-write-guard.latest.json","reports/validation-source.latest.json"]},{"id":"ad327f9ff09953f9ecb81f28337ee9db41d78b59","message":"feat(governance): 建立框架版本轴 + 收口治理文档漂移(G25 / C26,登记 G26)\n\n- 版本轴:CHANGELOG.md、package.json 0.1.0→0.2.0、v0.1.0 补打在 06b8b98、\n migration:plan / migration:record 记录两侧 frameworkVersion(凭证 schemaVersion 不变)\n- check:docs-truth 新增 changelog-exists / changelog-has-released-version /\n changelog-version-matches-package 三条断言;负向(package.json 改 0.3.0、删 CHANGELOG)均 exit 1\n- C26:PR 模板路由检查项改为实际口径 /api/{resources};发布状态快照按 2026-09-09\n ls-remote 重写(两远端停在 06b8b98,本地领先未推送)\n- 登记 G26:框架经 products/juhai.baseframework peerDeps 与两道 os-product 门禁反向绑定基座(OPEN)\n- G20 写明 GOV-PRODUCTION-OPS-001 的两份报告没有生产者脚本\n\n静态 pnpm check 全绿;未跑 runtime/UI,不改变 4f48008 的三级证据。\n\nCo-Authored-By: Claude Fable 5.1 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/base-framework/commit/ad327f9ff09953f9ecb81f28337ee9db41d78b59","author":{"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:13:46-07:00","added":["CHANGELOG.md"],"removed":[],"modified":[".agents/skills/derived-project-framework-sync/references/migration-protocol.md",".agents/skills/derived-project-framework-sync/scripts/plan-migration.mjs",".agents/skills/derived-project-framework-sync/scripts/record-migration.mjs",".github/pull_request_template.md","CLAUDE.md","docs/README.md","docs/governance-experience.md","package.json","scripts/check-docs-truth.mjs"]},{"id":"21872c1102354c492497f7e3cec736bdcc803dfe","message":"chore(reports): refresh final static evidence\n","url":"https://gitea.g-hi.com/luoanwu/base-framework/commit/21872c1102354c492497f7e3cec736bdcc803dfe","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-09-04T19:15:26-07:00","added":[],"removed":[],"modified":["reports/agent-adapters.latest.json","reports/conformance-matrix.latest.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-rules.latest.json","reports/governance-status.latest.json","reports/governance.latest.json","reports/migrations.latest.json","reports/naming.latest.json","reports/os-product-compat.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/statemachine-write-guard.latest.json","reports/validation-source.latest.json"]},{"id":"76452e45a7f719f2d0cb48c2d49632eb73086f8c","message":"docs: record clean commit acceptance\n","url":"https://gitea.g-hi.com/luoanwu/base-framework/commit/76452e45a7f719f2d0cb48c2d49632eb73086f8c","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-09-04T19:14:33-07:00","added":[],"removed":[],"modified":["CLAUDE.md","docs/project-review-2026-09-05.md","reports/agent-adapters.latest.json","reports/conformance-differential.latest.json","reports/conformance-matrix.latest.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-rules.latest.json","reports/governance-status.latest.json","reports/governance.latest.json","reports/migrations.latest.json","reports/naming.latest.json","reports/os-product-compat.latest.json","reports/runtime-acceptance.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/statemachine-write-guard.latest.json","reports/ui-acceptance.latest.json","reports/validation-source.latest.json"]},{"id":"4f480084b5276205dadb17c87f5ef91a2510f990","message":"fix: enforce stored order amount bounds and serialize generation\n","url":"https://gitea.g-hi.com/luoanwu/base-framework/commit/4f480084b5276205dadb17c87f5ef91a2510f990","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-09-04T19:11:15-07:00","added":["docs/project-review-2026-09-05.md"],"removed":[],"modified":["CLAUDE.md","apps/api-fastify/test/http.acceptance.test.ts","apps/api-nestjs/test/http.acceptance.test.ts","apps/web/e2e/acceptance.spec.ts","docs/governance-experience.md","package.json","packages/contracts/src/contracts.test.ts","packages/contracts/src/order.ts","reports/agent-adapters.latest.json","reports/baseline.json","reports/conformance-differential.latest.json","reports/conformance-matrix.latest.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-rules.latest.json","reports/governance-status.latest.json","reports/governance.latest.json","reports/migrations.latest.json","reports/naming.latest.json","reports/os-product-compat.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"]}],"total_commits":0,"head_commit":{"id":"b4e9d5a3b65afe4e08327bae6da99029b2faeffd","message":"chore(reports): refresh clean static evidence @ ad327f9(含版本轴断言)\n\nCo-Authored-By: Claude Fable 5.1 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/base-framework/commit/b4e9d5a3b65afe4e08327bae6da99029b2faeffd","author":{"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:15:03-07:00","added":[],"removed":[],"modified":["reports/agent-adapters.latest.json","reports/conformance-matrix.latest.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-rules.latest.json","reports/governance-status.latest.json","reports/governance.latest.json","reports/migrations.latest.json","reports/naming.latest.json","reports/os-product-compat.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/statemachine-write-guard.latest.json","reports/validation-source.latest.json"]},"repository":{"id":54,"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":"base-framework","full_name":"luoanwu/base-framework","description":"基础框架 monorepo","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":3076,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/base-framework/languages","html_url":"https://gitea.g-hi.com/luoanwu/base-framework","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/base-framework","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/base-framework.git","clone_url":"https://gitea.g-hi.com/luoanwu/base-framework.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-07-03T12:24:18+08:00","updated_at":"2026-09-03T10:23:12+08:00","archived_at":"1970-01-01T08:00:00+08:00","permissions":{"admin":true,"push":true,"pull":true},"has_code":true,"has_issues":true,"internal_tracker":{"enable_time_tracker":true,"allow_only_contributors_to_track_time":true,"enable_issue_dependencies":true},"has_wiki":true,"has_pull_requests":true,"has_projects":true,"projects_mode":"all","has_releases":true,"has_packages":true,"has_actions":true,"ignore_whitespace_conflicts":false,"allow_merge_commits":true,"allow_rebase":true,"allow_rebase_explicit":true,"allow_squash_merge":true,"allow_fast_forward_only_merge":true,"allow_rebase_update":true,"allow_manual_merge":false,"autodetect_manual_merge":false,"default_delete_branch_after_merge":false,"default_merge_style":"merge","default_allow_maintainer_edit":true,"avatar_url":"","internal":false,"mirror_interval":"","object_format_name":"sha1","mirror_updated":"0001-01-01T00:00:00Z","topics":[],"licenses":[]},"pusher":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"sender":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"}}...
|
push
|
2
|
10
|
1789003214
|
1789004150
|
0
|
1789003213
|
1789004203
|
group: governance-${{ github.workflow }}-${{ githu group: governance-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: ${{ github.event_name == 'pull_request' }}
...
|
governance-governance.yml-refs/heads/main
|
0
|
Edit
Delete
|
|
23811
|
chore(reports): refresh clean static evidence @ b4 chore(reports): refresh clean static evidence @ b48ecd2...
|
54
|
5
|
governance.yml
|
27
|
5
|
0
|
refs/heads/main
|
c41f1f57a34aa672910f188c2b2f09eef2ab1bda
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"b4e9d5a3b65afe4e08327bae6da99029b2faeffd","after":"c41f1f57a34aa672910f188c2b2f09eef2ab1bda","compare_url":"https://gitea.g-hi.com/luoanwu/base-framework/compare/b4e9d5a3b65afe4e08327bae6da99029b2faeffd...c41f1f57a34aa672910f188c2b2f09eef2ab1bda","commits":[{"id":"c41f1f57a34aa672910f188c2b2f09eef2ab1bda","message":"chore(reports): refresh clean static evidence @ b48ecd2\n\nCo-Authored-By: Claude Fable 5.1 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/base-framework/commit/c41f1f57a34aa672910f188c2b2f09eef2ab1bda","author":{"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:04:03-07:00","added":[],"removed":[],"modified":["reports/agent-adapters.latest.json","reports/conformance-matrix.latest.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-rules.latest.json","reports/governance-status.latest.json","reports/governance.latest.json","reports/migrations.latest.json","reports/naming.latest.json","reports/os-product-compat.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/statemachine-write-guard.latest.json","reports/validation-source.latest.json"]},{"id":"b48ecd2dcdf223d7ad8f61dc0639beca51356c19","message":"docs: record clean commit acceptance @ 3e061f2(runtime 225 / 差分 9×2 零差异 / UI 10;地板 testsPassed 213→225、ownTestCases 210→222、ownTests 29→31)\n\nCo-Authored-By: Claude Fable 5.1 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/base-framework/commit/b48ecd2dcdf223d7ad8f61dc0639beca51356c19","author":{"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:03:41-07:00","added":[],"removed":[],"modified":["CLAUDE.md","reports/baseline.json","reports/conformance-differential.latest.json","reports/runtime-acceptance.latest.json","reports/ui-acceptance.latest.json"]},{"id":"3e061f2335a08a218ca6ba090978450ed11ed865","message":"feat(seams): 平台接缝第一批——请求上下文 + fail-closed 平台端口 + 契约包可依赖形态(G28 关闭,登记 G29)\n\n- contracts 内核新增 request-context.ts(I9-A 六字段、受限 x-request-id、W3C traceparent、APP_ID 生产必填)\n 与 platform-ports.ts(权限/审计/事实出口/服务凭据端口 + createFailClosedPlatformPorts;权限永拒不抛,其余未配置即抛)\n- 两后端 AsyncLocalStorage 接线:x-request-id 回显 / x-trace-id / 鉴权后 enrich / pino mixin 六字段;\n Fastify genReqId 单源于 contracts,NestJS 由 create-app 装配中间件\n- 矩阵 +HTTP-REQUEST-CONTEXT-001/002(matrixVersion 3)、差分 +DIFF-REQUEST-CONTEXT-001(其余 checkpoint 抹平 headers)\n- check:fork-readiness F11:契约包 version = 框架版本、files=[\"dist\"]、kernel/sample 子路径、sideEffects:false(负向 exit 1)\n- package.json 0.4.0;@repo/contracts 0.0.0→0.4.0;新增 pnpm framework:pack(dist-artifacts/*.tgz,gitignore)\n- contracts 99/99、typecheck/lint/静态 pnpm check 全绿;ownTestCases 210→222、ownTests 29→31(地板随 runtime 结果收紧)\n\nCo-Authored-By: Claude Fable 5.1 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/base-framework/commit/3e061f2335a08a218ca6ba090978450ed11ed865","author":{"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:00:14-07:00","added":["apps/api-fastify/src/lib/request-context.ts","apps/api-fastify/src/plugins/request-context.ts","apps/api-nestjs/src/common/request-context.ts","packages/contracts/src/platform-ports.test.ts","packages/contracts/src/platform-ports.ts","packages/contracts/src/request-context.test.ts","packages/contracts/src/request-context.ts"],"removed":[],"modified":[".gitignore","CHANGELOG.md","CLAUDE.md","README.md","apps/api-fastify/src/app.ts","apps/api-fastify/src/plugins/auth.ts","apps/api-fastify/src/types.ts","apps/api-fastify/test/http.acceptance.test.ts","apps/api-nestjs/src/auth/auth.guard.ts","apps/api-nestjs/src/common/logger.ts","apps/api-nestjs/src/create-app.ts","apps/api-nestjs/test/conformance.differential.ts","apps/api-nestjs/test/http.acceptance.test.ts","conformance.matrix.json","docs/governance-experience.md","package.json","packages/contracts/package.json","packages/contracts/src/kernel.ts","scripts/check-fork-readiness.mjs"]},{"id":"e3c44104a4bbc5e5535f23e09be2fbd2690ed692","message":"docs(governance): 发布快照按 2026-09-09 晚 ls-remote 更新——两远端已到 b4e9d5a(v0.2.0),v0.3.0 三提交未推送\n\nCo-Authored-By: Claude Fable 5.1 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/base-framework/commit/e3c44104a4bbc5e5535f23e09be2fbd2690ed692","author":{"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:33:19-07:00","added":[],"removed":[],"modified":["CLAUDE.md"]},{"id":"c555c089423fe8549c03a32fd8843f90dfb0fde1","message":"chore(reports): refresh clean static evidence @ 927100a\n\nCo-Authored-By: Claude Fable 5.1 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/base-framework/commit/c555c089423fe8549c03a32fd8843f90dfb0fde1","author":{"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:17-07:00","added":[],"removed":[],"modified":["reports/agent-adapters.latest.json","reports/conformance-matrix.latest.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-rules.latest.json","reports/governance-status.latest.json","reports/governance.latest.json","reports/migrations.latest.json","reports/naming.latest.json","reports/os-product-compat.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/statemachine-write-guard.latest.json","reports/validation-source.latest.json"]}],"total_commits":0,"head_commit":{"id":"c41f1f57a34aa672910f188c2b2f09eef2ab1bda","message":"chore(reports): refresh clean static evidence @ b48ecd2\n\nCo-Authored-By: Claude Fable 5.1 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/base-framework/commit/c41f1f57a34aa672910f188c2b2f09eef2ab1bda","author":{"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:04:03-07:00","added":[],"removed":[],"modified":["reports/agent-adapters.latest.json","reports/conformance-matrix.latest.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-rules.latest.json","reports/governance-status.latest.json","reports/governance.latest.json","reports/migrations.latest.json","reports/naming.latest.json","reports/os-product-compat.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/statemachine-write-guard.latest.json","reports/validation-source.latest.json"]},"repository":{"id":54,"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":"base-framework","full_name":"luoanwu/base-framework","description":"基础框架 monorepo","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":3261,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/base-framework/languages","html_url":"https://gitea.g-hi.com/luoanwu/base-framework","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/base-framework","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/base-framework.git","clone_url":"https://gitea.g-hi.com/luoanwu/base-framework.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-07-03T12:24:18+08:00","updated_at":"2026-09-10T09:20:13+08:00","archived_at":"1970-01-01T08:00:00+08:00","permissions":{"admin":true,"push":true,"pull":true},"has_code":true,"has_issues":true,"internal_tracker":{"enable_time_tracker":true,"allow_only_contributors_to_track_time":true,"enable_issue_dependencies":true},"has_wiki":true,"has_pull_requests":true,"has_projects":true,"projects_mode":"all","has_releases":true,"has_packages":true,"has_actions":true,"ignore_whitespace_conflicts":false,"allow_merge_commits":true,"allow_rebase":true,"allow_rebase_explicit":true,"allow_squash_merge":true,"allow_fast_forward_only_merge":true,"allow_rebase_update":true,"allow_manual_merge":false,"autodetect_manual_merge":false,"default_delete_branch_after_merge":false,"default_merge_style":"merge","default_allow_maintainer_edit":true,"avatar_url":"","internal":false,"mirror_interval":"","object_format_name":"sha1","mirror_updated":"0001-01-01T00:00:00Z","topics":[],"licenses":[]},"pusher":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"sender":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"}}...
|
push
|
2
|
10
|
1789006372
|
1789006462
|
0
|
1789006371
|
1789006495
|
group: governance-${{ github.workflow }}-${{ githu group: governance-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: ${{ github.event_name == 'pull_request' }}
...
|
governance-governance.yml-refs/heads/main
|
0
|
Edit
Delete
|
|
23812
|
docs(governance): 发布快照按 2026-09-10 ls-remote 更新——两 docs(governance): 发布快照按 2026-09-10 ls-remote 更新——两远端已到 c41f1f5(v0.4.0,标签 v0.1.0—v0.4.0 已推),v0.5.0 未推送...
|
54
|
5
|
governance.yml
|
28
|
5
|
0
|
refs/heads/main
|
f5b6f69ce1f8d3e92e5decf64aef434d235ce4de
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"c41f1f57a34aa672910f188c2b2f09eef2ab1bda","after":"f5b6f69ce1f8d3e92e5decf64aef434d235ce4de","compare_url":"https://gitea.g-hi.com/luoanwu/base-framework/compare/c41f1f57a34aa672910f188c2b2f09eef2ab1bda...f5b6f69ce1f8d3e92e5decf64aef434d235ce4de","commits":[{"id":"f5b6f69ce1f8d3e92e5decf64aef434d235ce4de","message":"docs(governance): 发布快照按 2026-09-10 ls-remote 更新——两远端已到 c41f1f5(v0.4.0,标签 v0.1.0—v0.4.0 已推),v0.5.0 未推送\n\nCo-Authored-By: Claude Fable 5.1 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/base-framework/commit/f5b6f69ce1f8d3e92e5decf64aef434d235ce4de","author":{"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:27:16-07:00","added":[],"removed":[],"modified":["CLAUDE.md"]},{"id":"13d5c613451ac297f8ba94ba3810302b37630328","message":"chore(reports): refresh clean static evidence @ d2797f1\n\nCo-Authored-By: Claude Fable 5.1 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/base-framework/commit/13d5c613451ac297f8ba94ba3810302b37630328","author":{"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:26:09-07:00","added":[],"removed":[],"modified":["reports/agent-adapters.latest.json","reports/conformance-matrix.latest.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-rules.latest.json","reports/governance-status.latest.json","reports/governance.latest.json","reports/migrations.latest.json","reports/naming.latest.json","reports/os-product-compat.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/statemachine-write-guard.latest.json","reports/validation-source.latest.json"]},{"id":"d2797f1b1f19c364477013490e881968ddf56ba2","message":"fix(tooling): migration:rollback 的 dirty 判定排除自身报告;bootstrap 回滚点只红在新鲜度断言时降为 finding;G30 经验回灌\n\nCo-Authored-By: Claude Fable 5.1 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/base-framework/commit/d2797f1b1f19c364477013490e881968ddf56ba2","author":{"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:25:52-07:00","added":[],"removed":[],"modified":[".agents/skills/derived-project-framework-sync/scripts/rollback-migration.mjs","docs/governance-experience.md"]},{"id":"15e2fdeb762cc2dad616d41b372dcb83f2d12757","message":"feat(tooling): scaffold 入仓 + 迁移回滚预检(FW-02 / FW-04)\n\n- pnpm scaffold:git archive 快照 → 删源仓运行证据 → 重绑定 package name 与 OS 产品身份(作用域替换)→ git init\n → frozen install → migration:record 签发凭证 → 可选 --acceptance(目标专属 DB/Redis 实跑 runtime/UI 并回灌 doctrine)\n → 迁移记录 → 静态 pnpm check\n- pnpm migration:rollback:读凭证 rollback.gitSha,隔离 worktree 验证可检出(--verify 加 install + check:kernel),\n 写预检报告并只打印方案,永不 reset 目标\n- migration:record 凭证新增 rollback 字段与 --rollback-to\n- 版本 0.5.0(root + contracts);SKILL / 迁移协议登记两条命令\n\nCo-Authored-By: Claude Fable 5.1 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/base-framework/commit/15e2fdeb762cc2dad616d41b372dcb83f2d12757","author":{"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:19:19-07:00","added":[".agents/skills/derived-project-framework-sync/scripts/rollback-migration.mjs","scripts/scaffold-derived.mjs"],"removed":[],"modified":[".agents/skills/derived-project-framework-sync/SKILL.md",".agents/skills/derived-project-framework-sync/references/migration-protocol.md",".agents/skills/derived-project-framework-sync/scripts/record-migration.mjs","CHANGELOG.md","CLAUDE.md","README.md","package.json","packages/contracts/package.json"]}],"total_commits":0,"head_commit":{"id":"f5b6f69ce1f8d3e92e5decf64aef434d235ce4de","message":"docs(governance): 发布快照按 2026-09-10 ls-remote 更新——两远端已到 c41f1f5(v0.4.0,标签 v0.1.0—v0.4.0 已推),v0.5.0 未推送\n\nCo-Authored-By: Claude Fable 5.1 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/base-framework/commit/f5b6f69ce1f8d3e92e5decf64aef434d235ce4de","author":{"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:27:16-07:00","added":[],"removed":[],"modified":["CLAUDE.md"]},"repository":{"id":54,"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":"base-framework","full_name":"luoanwu/base-framework","description":"基础框架 monorepo","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":3483,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/base-framework/languages","html_url":"https://gitea.g-hi.com/luoanwu/base-framework","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/base-framework","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/base-framework.git","clone_url":"https://gitea.g-hi.com/luoanwu/base-framework.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-07-03T12:24:18+08:00","updated_at":"2026-09-10T10:12:52+08:00","archived_at":"1970-01-01T08:00:00+08:00","permissions":{"admin":true,"push":true,"pull":true},"has_code":true,"has_issues":true,"internal_tracker":{"enable_time_tracker":true,"allow_only_contributors_to_track_time":true,"enable_issue_dependencies":true},"has_wiki":true,"has_pull_requests":true,"has_projects":true,"projects_mode":"all","has_releases":true,"has_packages":true,"has_actions":true,"ignore_whitespace_conflicts":false,"allow_merge_commits":true,"allow_rebase":true,"allow_rebase_explicit":true,"allow_squash_merge":true,"allow_fast_forward_only_merge":true,"allow_rebase_update":true,"allow_manual_merge":false,"autodetect_manual_merge":false,"default_delete_branch_after_merge":false,"default_merge_style":"merge","default_allow_maintainer_edit":true,"avatar_url":"","internal":false,"mirror_interval":"","object_format_name":"sha1","mirror_updated":"0001-01-01T00:00:00Z","topics":[],"licenses":[]},"pusher":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"sender":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"}}...
|
push
|
2
|
10
|
1789007764
|
1789007811
|
0
|
1789007763
|
1789007820
|
group: governance-${{ github.workflow }}-${{ githu group: governance-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: ${{ github.event_name == 'pull_request' }}
...
|
governance-governance.yml-refs/heads/main
|
0
|
Edit
Delete
|
|
23814
|
docs(governance): 发布快照按 2026-09-10 晚 ls-remote 更新— docs(governance): 发布快照按 2026-09-10 晚 ls-remote 更新——两远端已到 f5b6f69(v0.5.0),v0.6.0 三提交未推送...
|
54
|
5
|
governance.yml
|
29
|
5
|
0
|
refs/heads/main
|
4a18e91045737eab943db36986074089b6c1923c
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"f5b6f69ce1f8d3e92e5decf64aef434d235ce4de","after":"4a18e91045737eab943db36986074089b6c1923c","compare_url":"https://gitea.g-hi.com/luoanwu/base-framework/compare/f5b6f69ce1f8d3e92e5decf64aef434d235ce4de...4a18e91045737eab943db36986074089b6c1923c","commits":[{"id":"4a18e91045737eab943db36986074089b6c1923c","message":"docs(governance): 发布快照按 2026-09-10 晚 ls-remote 更新——两远端已到 f5b6f69(v0.5.0),v0.6.0 三提交未推送\n\nCo-Authored-By: Claude Fable 5.1 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/base-framework/commit/4a18e91045737eab943db36986074089b6c1923c","author":{"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:52:06-07:00","added":[],"removed":[],"modified":["CLAUDE.md"]},{"id":"73c9031e503fda71451cce750e18cbfbc910035c","message":"chore(reports): refresh clean static evidence @ 7a9f675\n\nCo-Authored-By: Claude Fable 5.1 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/base-framework/commit/73c9031e503fda71451cce750e18cbfbc910035c","author":{"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:49:53-07:00","added":[],"removed":[],"modified":["reports/agent-adapters.latest.json","reports/conformance-matrix.latest.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-rules.latest.json","reports/governance-status.latest.json","reports/governance.latest.json","reports/migrations.latest.json","reports/naming.latest.json","reports/os-product-compat.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/statemachine-write-guard.latest.json","reports/validation-source.latest.json"]},{"id":"7a9f67596b2f9997cf46afb4ca113a3ce9c7a0a3","message":"docs: record clean commit acceptance @ c1af469(runtime 231 / 差分 9×2 零差异 / UI 10;地板 testsPassed 225→231、ownTestCases 222→228;G29 第一半经验回灌)\n\nCo-Authored-By: Claude Fable 5.1 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/base-framework/commit/7a9f67596b2f9997cf46afb4ca113a3ce9c7a0a3","author":{"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:49:31-07:00","added":[],"removed":[],"modified":["CLAUDE.md","docs/governance-experience.md","reports/baseline.json","reports/conformance-differential.latest.json","reports/runtime-acceptance.latest.json","reports/ui-acceptance.latest.json"]},{"id":"c1af4695da80550a56a0bf4e6629f840c6f5978f","message":"feat(context): 请求上下文贯通 Outbox → Redis → 消费者(I9-B)+ 平台端口束接入装配点(G29 第一半)\n\n- Outbox 新增可空 request_id / trace_id(两后端迁移 20260910090000_outbox_request_context);10 处写链同 tx 落入\n- RealtimeEnvelope 可选 context{requestId,traceId};dispatcher/重放从 outbox 行带出;schema 校验;README 与 docs-truth 断言同步\n- 队列载荷携带 context,两后端 worker restoreRequestContext 后处理\n- NestJS PlatformPortsModule(PLATFORM_PORTS) / Fastify app.platformPorts:默认 createFailClosedPlatformPorts\n- 矩阵 +HTTP-REQUEST-CONTEXT-003、PORTS-FAIL-CLOSED-001(matrixVersion 4);差分 DIFF-OUTBOX-001 含 request id 存在性\n- contracts 101/101、typecheck/lint/迁移/矩阵/静态 pnpm check 全绿;版本 0.6.0\n\nCo-Authored-By: Claude Fable 5.1 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/base-framework/commit/c1af4695da80550a56a0bf4e6629f840c6f5978f","author":{"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:45:56-07:00","added":["apps/api-fastify/prisma/migrations/20260910090000_outbox_request_context/migration.sql","apps/api-fastify/src/plugins/platform-ports.ts","apps/api-nestjs/prisma/migrations/20260910090000_outbox_request_context/migration.sql","apps/api-nestjs/src/platform/platform-ports.module.ts"],"removed":[],"modified":["CHANGELOG.md","CLAUDE.md","README.md","apps/api-fastify/prisma/schema.prisma","apps/api-fastify/src/app.ts","apps/api-fastify/src/lib/request-context.ts","apps/api-fastify/src/modules/orders/orders.service.ts","apps/api-fastify/src/modules/replay.ts","apps/api-fastify/src/modules/users/users.service.ts","apps/api-fastify/src/plugins/outbox.ts","apps/api-fastify/src/plugins/queue.ts","apps/api-fastify/src/routes/jobs.ts","apps/api-fastify/src/types.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/request-context.ts","apps/api-nestjs/src/events/outbox-dispatcher.service.ts","apps/api-nestjs/src/events/replay.service.ts","apps/api-nestjs/src/orders/orders.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/users/users.service.ts","apps/api-nestjs/test/conformance.differential.ts","apps/api-nestjs/test/http.acceptance.test.ts","conformance.matrix.json","package.json","packages/contracts/package.json","packages/contracts/src/contracts.test.ts","packages/contracts/src/realtime.ts","packages/contracts/src/request-context.test.ts","packages/contracts/src/request-context.ts","scripts/check-docs-truth.mjs"]}],"total_commits":0,"head_commit":{"id":"4a18e91045737eab943db36986074089b6c1923c","message":"docs(governance): 发布快照按 2026-09-10 晚 ls-remote 更新——两远端已到 f5b6f69(v0.5.0),v0.6.0 三提交未推送\n\nCo-Authored-By: Claude Fable 5.1 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/base-framework/commit/4a18e91045737eab943db36986074089b6c1923c","author":{"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:52:06-07:00","added":[],"removed":[],"modified":["CLAUDE.md"]},"repository":{"id":54,"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":"base-framework","full_name":"luoanwu/base-framework","description":"基础框架 monorepo","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":3668,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/base-framework/languages","html_url":"https://gitea.g-hi.com/luoanwu/base-framework","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/base-framework","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/base-framework.git","clone_url":"https://gitea.g-hi.com/luoanwu/base-framework.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-07-03T12:24:18+08:00","updated_at":"2026-09-10T10:36: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
|
10
|
1789010023
|
1789010068
|
0
|
1789010022
|
1789010077
|
group: governance-${{ github.workflow }}-${{ githu group: governance-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: ${{ github.event_name == 'pull_request' }}
...
|
governance-governance.yml-refs/heads/main
|
0
|
Edit
Delete
|
|
23403
|
chore: initialize data analysis scaffold
|
55
|
5
|
governance.yml
|
1
|
5
|
0
|
refs/heads/main
|
8b9d81d390dac8db76b755c9d7a25f7439e2a59b
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"0000000000000000000000000000000000000000","after":"8b9d81d390dac8db76b755c9d7a25f7439e2a59b","compare_url":"https://gitea.g-hi.com/","commits":[{"id":"8b9d81d390dac8db76b755c9d7a25f7439e2a59b","message":"chore: initialize data analysis scaffold\n","url":"https://gitea.g-hi.com/luoanwu/data-analysis/commit/8b9d81d390dac8db76b755c9d7a25f7439e2a59b","author":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"verification":null,"timestamp":"2026-07-06T01:29:19-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/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/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/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/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/juxi.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/scripts/sync-duckdb-assets.mjs","apps/web/src/app/api/llm/chart-spec/route.ts","apps/web/src/app/globals.css","apps/web/src/app/juxi/JuxiApp.tsx","apps/web/src/app/juxi/JuxiWorkbench.tsx","apps/web/src/app/juxi/juxi.css","apps/web/src/app/juxi/page.tsx","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/hooks/useSSE.ts","apps/web/src/hooks/useWebSocket.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/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","package.json","packages/chart-dsl/README.md","packages/chart-dsl/package.json","packages/chart-dsl/src/AnalyticsCanvas.tsx","packages/chart-dsl/src/ChartCard.css","packages/chart-dsl/src/ChartCard.tsx","packages/chart-dsl/src/compile.test.ts","packages/chart-dsl/src/compile.ts","packages/chart-dsl/src/css.d.ts","packages/chart-dsl/src/duckdb.ts","packages/chart-dsl/src/hooks.ts","packages/chart-dsl/src/index.ts","packages/chart-dsl/src/llm.ts","packages/chart-dsl/src/schema.test.ts","packages/chart-dsl/src/schema.ts","packages/chart-dsl/src/theme.ts","packages/chart-dsl/tsconfig.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/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-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","tsconfig.base.json","turbo.json"],"removed":[],"modified":[]}],"total_commits":0,"head_commit":{"id":"8b9d81d390dac8db76b755c9d7a25f7439e2a59b","message":"chore: initialize data analysis scaffold\n","url":"https://gitea.g-hi.com/luoanwu/data-analysis/commit/8b9d81d390dac8db76b755c9d7a25f7439e2a59b","author":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"verification":null,"timestamp":"2026-07-06T01:29:19-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/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/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/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/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/juxi.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/scripts/sync-duckdb-assets.mjs","apps/web/src/app/api/llm/chart-spec/route.ts","apps/web/src/app/globals.css","apps/web/src/app/juxi/JuxiApp.tsx","apps/web/src/app/juxi/JuxiWorkbench.tsx","apps/web/src/app/juxi/juxi.css","apps/web/src/app/juxi/page.tsx","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/hooks/useSSE.ts","apps/web/src/hooks/useWebSocket.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/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","package.json","packages/chart-dsl/README.md","packages/chart-dsl/package.json","packages/chart-dsl/src/AnalyticsCanvas.tsx","packages/chart-dsl/src/ChartCard.css","packages/chart-dsl/src/ChartCard.tsx","packages/chart-dsl/src/compile.test.ts","packages/chart-dsl/src/compile.ts","packages/chart-dsl/src/css.d.ts","packages/chart-dsl/src/duckdb.ts","packages/chart-dsl/src/hooks.ts","packages/chart-dsl/src/index.ts","packages/chart-dsl/src/llm.ts","packages/chart-dsl/src/schema.test.ts","packages/chart-dsl/src/schema.ts","packages/chart-dsl/src/theme.ts","packages/chart-dsl/tsconfig.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/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-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","tsconfig.base.json","turbo.json"],"removed":[],"modified":[]},"repository":{"id":55,"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":"data-analysis","full_name":"luoanwu/data-analysis","description":"数据分析项目 / Data Analysis monorepo","empty":false,"private":true,"fork":false,"template":false,"mirror":false,"size":27,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/data-analysis/languages","html_url":"https://gitea.g-hi.com/luoanwu/data-analysis","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/data-analysis","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/data-analysis.git","clone_url":"https://gitea.g-hi.com/luoanwu/data-analysis.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-06T16:30:36+08:00","updated_at":"2026-07-06T16:30: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
|
8
|
1783326647
|
1783326795
|
0
|
1783326647
|
1783326795
|
group: governance-${{ github.workflow }}-${{ githu group: governance-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: "true"
...
|
governance-governance.yml-refs/heads/main
|
1
|
Edit
Delete
|
|
23404
|
feat: initialize SiteScout workspace
|
56
|
5
|
governance.yml
|
1
|
5
|
0
|
refs/heads/main
|
e65fc3036083a4118e0c909bd6a58914e6b33fef
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"0000000000000000000000000000000000000000","after":"e65fc3036083a4118e0c909bd6a58914e6b33fef","compare_url":"https://gitea.g-hi.com/","commits":[{"id":"e65fc3036083a4118e0c909bd6a58914e6b33fef","message":"feat: initialize SiteScout workspace\n","url":"https://gitea.g-hi.com/luoanwu/hidian-site-selection/commit/e65fc3036083a4118e0c909bd6a58914e6b33fef","author":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"verification":null,"timestamp":"2026-07-06T01:31:18-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/20260705000100_add_site_selection/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/sites/sites.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/sites.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/realtime.tenant.test.ts","apps/api-fastify/test/sites.integration.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/20260705000100_add_site_selection/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/sites/sites.controller.ts","apps/api-nestjs/src/sites/sites.module.ts","apps/api-nestjs/src/sites/sites.service.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/realtime.tenant.test.ts","apps/api-nestjs/test/sites.integration.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/public/fonts/sitescout/Inter-400-0000-f6cd3edd.woff2","apps/web/public/fonts/sitescout/Inter-400-0100-61bfcdb2.woff2","apps/web/public/fonts/sitescout/Inter-400-0102-d53fe561.woff2","apps/web/public/fonts/sitescout/Inter-400-0301-502cf6f3.woff2","apps/web/public/fonts/sitescout/Inter-400-0370-d3230b38.woff2","apps/web/public/fonts/sitescout/Inter-400-0460-f617bd9e.woff2","apps/web/public/fonts/sitescout/Inter-400-1F00-89268580.woff2","apps/web/public/fonts/sitescout/Inter-500-0000-f6cd3edd.woff2","apps/web/public/fonts/sitescout/Inter-500-0100-61bfcdb2.woff2","apps/web/public/fonts/sitescout/Inter-500-0102-d53fe561.woff2","apps/web/public/fonts/sitescout/Inter-500-0301-502cf6f3.woff2","apps/web/public/fonts/sitescout/Inter-500-0370-d3230b38.woff2","apps/web/public/fonts/sitescout/Inter-500-0460-f617bd9e.woff2","apps/web/public/fonts/sitescout/Inter-500-1F00-89268580.woff2","apps/web/public/fonts/sitescout/Inter-600-0000-f6cd3edd.woff2","apps/web/public/fonts/sitescout/Inter-600-0100-61bfcdb2.woff2","apps/web/public/fonts/sitescout/Inter-600-0102-d53fe561.woff2","apps/web/public/fonts/sitescout/Inter-600-0301-502cf6f3.woff2","apps/web/public/fonts/sitescout/Inter-600-0370-d3230b38.woff2","apps/web/public/fonts/sitescout/Inter-600-0460-f617bd9e.woff2","apps/web/public/fonts/sitescout/Inter-600-1F00-89268580.woff2","apps/web/public/fonts/sitescout/Inter-700-0000-f6cd3edd.woff2","apps/web/public/fonts/sitescout/Inter-700-0100-61bfcdb2.woff2","apps/web/public/fonts/sitescout/Inter-700-0102-d53fe561.woff2","apps/web/public/fonts/sitescout/Inter-700-0301-502cf6f3.woff2","apps/web/public/fonts/sitescout/Inter-700-0370-d3230b38.woff2","apps/web/public/fonts/sitescout/Inter-700-0460-f617bd9e.woff2","apps/web/public/fonts/sitescout/Inter-700-1F00-89268580.woff2","apps/web/public/fonts/sitescout/JetBrainsMono-400-0000-d60a3608.woff2","apps/web/public/fonts/sitescout/JetBrainsMono-400-0100-58d40118.woff2","apps/web/public/fonts/sitescout/JetBrainsMono-400-0102-5731ccc1.woff2","apps/web/public/fonts/sitescout/JetBrainsMono-400-0301-933d4a8c.woff2","apps/web/public/fonts/sitescout/JetBrainsMono-400-0370-7e45a756.woff2","apps/web/public/fonts/sitescout/JetBrainsMono-400-0460-c34028be.woff2","apps/web/public/fonts/sitescout/JetBrainsMono-500-0000-d60a3608.woff2","apps/web/public/fonts/sitescout/JetBrainsMono-500-0100-58d40118.woff2","apps/web/public/fonts/sitescout/JetBrainsMono-500-0102-5731ccc1.woff2","apps/web/public/fonts/sitescout/JetBrainsMono-500-0301-933d4a8c.woff2","apps/web/public/fonts/sitescout/JetBrainsMono-500-0370-7e45a756.woff2","apps/web/public/fonts/sitescout/JetBrainsMono-500-0460-c34028be.woff2","apps/web/public/fonts/sitescout/JetBrainsMono-600-0000-d60a3608.woff2","apps/web/public/fonts/sitescout/JetBrainsMono-600-0100-58d40118.woff2","apps/web/public/fonts/sitescout/JetBrainsMono-600-0102-5731ccc1.woff2","apps/web/public/fonts/sitescout/JetBrainsMono-600-0301-933d4a8c.woff2","apps/web/public/fonts/sitescout/JetBrainsMono-600-0370-7e45a756.woff2","apps/web/public/fonts/sitescout/JetBrainsMono-600-0460-c34028be.woff2","apps/web/src/app/console/page.tsx","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/sitescout/AcceptanceCenter.tsx","apps/web/src/components/sitescout/CityMap.tsx","apps/web/src/components/sitescout/CompareModal.tsx","apps/web/src/components/sitescout/CompetitorSection.tsx","apps/web/src/components/sitescout/ComplianceSection.tsx","apps/web/src/components/sitescout/ScoreSection.tsx","apps/web/src/components/sitescout/SiteScoutApp.tsx","apps/web/src/components/sitescout/StakeoutSection.tsx","apps/web/src/components/sitescout/TierSection.tsx","apps/web/src/components/sitescout/sitescout.css","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/hooks/useSSE.ts","apps/web/src/hooks/useWebSocket.ts","apps/web/src/lib/api.ts","apps/web/src/lib/providers.tsx","apps/web/src/lib/sitescout-labels.ts","apps/web/src/lib/sitescout-types.ts","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/base-framework-migration.md","docs/domain-glossary.md","docs/domain/owner-matrix.md","docs/domain/site-selection-blueprint.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/site-fixtures.ts","packages/contracts/src/site.test.ts","packages/contracts/src/site.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/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-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","tsconfig.base.json","turbo.json"],"removed":[],"modified":[]}],"total_commits":0,"head_commit":{"id":"e65fc3036083a4118e0c909bd6a58914e6b33fef","message":"feat: initialize SiteScout workspace\n","url":"https://gitea.g-hi.com/luoanwu/hidian-site-selection/commit/e65fc3036083a4118e0c909bd6a58914e6b33fef","author":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"verification":null,"timestamp":"2026-07-06T01:31:18-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/20260705000100_add_site_selection/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/sites/sites.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/sites.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/realtime.tenant.test.ts","apps/api-fastify/test/sites.integration.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/20260705000100_add_site_selection/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/sites/sites.controller.ts","apps/api-nestjs/src/sites/sites.module.ts","apps/api-nestjs/src/sites/sites.service.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/realtime.tenant.test.ts","apps/api-nestjs/test/sites.integration.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/public/fonts/sitescout/Inter-400-0000-f6cd3edd.woff2","apps/web/public/fonts/sitescout/Inter-400-0100-61bfcdb2.woff2","apps/web/public/fonts/sitescout/Inter-400-0102-d53fe561.woff2","apps/web/public/fonts/sitescout/Inter-400-0301-502cf6f3.woff2","apps/web/public/fonts/sitescout/Inter-400-0370-d3230b38.woff2","apps/web/public/fonts/sitescout/Inter-400-0460-f617bd9e.woff2","apps/web/public/fonts/sitescout/Inter-400-1F00-89268580.woff2","apps/web/public/fonts/sitescout/Inter-500-0000-f6cd3edd.woff2","apps/web/public/fonts/sitescout/Inter-500-0100-61bfcdb2.woff2","apps/web/public/fonts/sitescout/Inter-500-0102-d53fe561.woff2","apps/web/public/fonts/sitescout/Inter-500-0301-502cf6f3.woff2","apps/web/public/fonts/sitescout/Inter-500-0370-d3230b38.woff2","apps/web/public/fonts/sitescout/Inter-500-0460-f617bd9e.woff2","apps/web/public/fonts/sitescout/Inter-500-1F00-89268580.woff2","apps/web/public/fonts/sitescout/Inter-600-0000-f6cd3edd.woff2","apps/web/public/fonts/sitescout/Inter-600-0100-61bfcdb2.woff2","apps/web/public/fonts/sitescout/Inter-600-0102-d53fe561.woff2","apps/web/public/fonts/sitescout/Inter-600-0301-502cf6f3.woff2","apps/web/public/fonts/sitescout/Inter-600-0370-d3230b38.woff2","apps/web/public/fonts/sitescout/Inter-600-0460-f617bd9e.woff2","apps/web/public/fonts/sitescout/Inter-600-1F00-89268580.woff2","apps/web/public/fonts/sitescout/Inter-700-0000-f6cd3edd.woff2","apps/web/public/fonts/sitescout/Inter-700-0100-61bfcdb2.woff2","apps/web/public/fonts/sitescout/Inter-700-0102-d53fe561.woff2","apps/web/public/fonts/sitescout/Inter-700-0301-502cf6f3.woff2","apps/web/public/fonts/sitescout/Inter-700-0370-d3230b38.woff2","apps/web/public/fonts/sitescout/Inter-700-0460-f617bd9e.woff2","apps/web/public/fonts/sitescout/Inter-700-1F00-89268580.woff2","apps/web/public/fonts/sitescout/JetBrainsMono-400-0000-d60a3608.woff2","apps/web/public/fonts/sitescout/JetBrainsMono-400-0100-58d40118.woff2","apps/web/public/fonts/sitescout/JetBrainsMono-400-0102-5731ccc1.woff2","apps/web/public/fonts/sitescout/JetBrainsMono-400-0301-933d4a8c.woff2","apps/web/public/fonts/sitescout/JetBrainsMono-400-0370-7e45a756.woff2","apps/web/public/fonts/sitescout/JetBrainsMono-400-0460-c34028be.woff2","apps/web/public/fonts/sitescout/JetBrainsMono-500-0000-d60a3608.woff2","apps/web/public/fonts/sitescout/JetBrainsMono-500-0100-58d40118.woff2","apps/web/public/fonts/sitescout/JetBrainsMono-500-0102-5731ccc1.woff2","apps/web/public/fonts/sitescout/JetBrainsMono-500-0301-933d4a8c.woff2","apps/web/public/fonts/sitescout/JetBrainsMono-500-0370-7e45a756.woff2","apps/web/public/fonts/sitescout/JetBrainsMono-500-0460-c34028be.woff2","apps/web/public/fonts/sitescout/JetBrainsMono-600-0000-d60a3608.woff2","apps/web/public/fonts/sitescout/JetBrainsMono-600-0100-58d40118.woff2","apps/web/public/fonts/sitescout/JetBrainsMono-600-0102-5731ccc1.woff2","apps/web/public/fonts/sitescout/JetBrainsMono-600-0301-933d4a8c.woff2","apps/web/public/fonts/sitescout/JetBrainsMono-600-0370-7e45a756.woff2","apps/web/public/fonts/sitescout/JetBrainsMono-600-0460-c34028be.woff2","apps/web/src/app/console/page.tsx","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/sitescout/AcceptanceCenter.tsx","apps/web/src/components/sitescout/CityMap.tsx","apps/web/src/components/sitescout/CompareModal.tsx","apps/web/src/components/sitescout/CompetitorSection.tsx","apps/web/src/components/sitescout/ComplianceSection.tsx","apps/web/src/components/sitescout/ScoreSection.tsx","apps/web/src/components/sitescout/SiteScoutApp.tsx","apps/web/src/components/sitescout/StakeoutSection.tsx","apps/web/src/components/sitescout/TierSection.tsx","apps/web/src/components/sitescout/sitescout.css","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/hooks/useSSE.ts","apps/web/src/hooks/useWebSocket.ts","apps/web/src/lib/api.ts","apps/web/src/lib/providers.tsx","apps/web/src/lib/sitescout-labels.ts","apps/web/src/lib/sitescout-types.ts","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/base-framework-migration.md","docs/domain-glossary.md","docs/domain/owner-matrix.md","docs/domain/site-selection-blueprint.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/site-fixtures.ts","packages/contracts/src/site.test.ts","packages/contracts/src/site.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/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-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","tsconfig.base.json","turbo.json"],"removed":[],"modified":[]},"repository":{"id":56,"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":"hidian-site-selection","full_name":"luoanwu/hidian-site-selection","description":"嗨点选址 / SiteScout monorepo","empty":false,"private":true,"fork":false,"template":false,"mirror":false,"size":27,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/hidian-site-selection/languages","html_url":"https://gitea.g-hi.com/luoanwu/hidian-site-selection","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/hidian-site-selection","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/hidian-site-selection.git","clone_url":"https://gitea.g-hi.com/luoanwu/hidian-site-selection.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-06T16:32:39+08:00","updated_at":"2026-07-06T16:33: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
|
8
|
1783326795
|
1783326922
|
0
|
1783326783
|
1783326922
|
group: governance-${{ github.workflow }}-${{ githu group: governance-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: "true"
...
|
governance-governance.yml-refs/heads/main
|
1
|
Edit
Delete
|
|
23514
|
feat(studio): connect script storyboard and video feat(studio): connect script storyboard and video workflow...
|
57
|
5
|
governance.yml
|
1
|
5
|
0
|
refs/heads/main
|
e759f5e4509e93cc4968259cc6d6a64bc73c09f1
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"eb6483fa7aadc8d2d4e715274c2519f67005e135","after":"e759f5e4509e93cc4968259cc6d6a64bc73c09f1","compare_url":"https://gitea.g-hi.com/luoanwu/image-generation/compare/eb6483fa7aadc8d2d4e715274c2519f67005e135...e759f5e4509e93cc4968259cc6d6a64bc73c09f1","commits":[{"id":"e759f5e4509e93cc4968259cc6d6a64bc73c09f1","message":"feat(studio): connect script storyboard and video workflow\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/e759f5e4509e93cc4968259cc6d6a64bc73c09f1","author":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"verification":null,"timestamp":"2026-08-24T01:26:47-07:00","added":["apps/web/src/components/material-factory/PipelineFlow.tsx","packages/contracts/src/script-to-storyboard.test.ts","packages/contracts/src/script-to-storyboard.ts"],"removed":[],"modified":[".claude/launch.json","CLAUDE.md","apps/api-fastify/src/modules/material-factory/material-factory.service.ts","apps/api-fastify/test/material-inference.acceptance.test.ts","apps/api-nestjs/src/material-factory/material-factory.service.ts","apps/api-nestjs/test/material-inference.acceptance.test.ts","apps/web/src/components/material-factory/BrandHub.tsx","apps/web/src/components/material-factory/CreateStudio.tsx","apps/web/src/components/material-factory/FactoryShell.tsx","apps/web/src/components/material-factory/ScriptStudio.tsx","apps/web/src/components/material-factory/StoryboardStudio.tsx","apps/web/src/components/material-factory/VideoStudio.tsx","apps/web/src/components/material-factory/constants.ts","apps/web/src/components/material-factory/storyboard-director.ts","apps/web/src/store/useFactoryStore.ts","apps/web/tsconfig.json","packages/contracts/src/index.ts","packages/contracts/src/material-brand.test.ts","packages/contracts/src/material.ts","packages/contracts/src/storyboard.test.ts","packages/contracts/src/storyboard.ts","reports/contract-consumers.latest.json","reports/full-transformation-completion-audit.latest.md","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/runtime-acceptance.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/script-acceptance.latest.json","reports/ui-acceptance.desktop.png","reports/ui-acceptance.latest.json","reports/ui-acceptance.mobile.png","reports/ui-acceptance.production.png","reports/validation-source.latest.json","scripts/check-naming.mjs","services/model-sidecar/main.py"]},{"id":"553239d8af8a5f7a56988fa913deaecd5f154121","message":"feat(studio): complete live Bailian production workflow\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/553239d8af8a5f7a56988fa913deaecd5f154121","author":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"verification":null,"timestamp":"2026-08-23T19:25:55-07:00","added":["apps/api-fastify/prisma/migrations/20260823220000_script_scenario_modes/migration.sql","apps/api-fastify/prisma/migrations/20260823230000_storyboard_video/migration.sql","apps/api-nestjs/prisma/migrations/20260823220000_script_scenario_modes/migration.sql","apps/api-nestjs/prisma/migrations/20260823230000_storyboard_video/migration.sql","apps/web/src/components/material-factory/VideoStudio.tsx","packages/contracts/src/script-scenario.test.ts","packages/contracts/src/script-sidecar.test.ts","packages/contracts/src/storyboard-video.test.ts"],"removed":[],"modified":["CLAUDE.md","apps/api-fastify/prisma/schema.prisma","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/shooting-script.service.ts","apps/api-fastify/src/routes/material-factory.ts","apps/api-fastify/test/material-inference.acceptance.test.ts","apps/api-fastify/test/material-script.acceptance.test.ts","apps/api-nestjs/prisma/schema.prisma","apps/api-nestjs/src/material-factory/material-factory.controller.ts","apps/api-nestjs/src/material-factory/material-factory.service.ts","apps/api-nestjs/src/material-factory/shooting-script.service.ts","apps/api-nestjs/test/material-inference.acceptance.test.ts","apps/api-nestjs/test/material-script.acceptance.test.ts","apps/web/src/app/globals.css","apps/web/src/app/layout.tsx","apps/web/src/components/EventFeed.tsx","apps/web/src/components/RealtimeBar.tsx","apps/web/src/components/material-factory/BlockedResolutionPanel.tsx","apps/web/src/components/material-factory/BrandHub.tsx","apps/web/src/components/material-factory/CreateStudio.tsx","apps/web/src/components/material-factory/DeliveryCenter.tsx","apps/web/src/components/material-factory/DemoExportModal.tsx","apps/web/src/components/material-factory/EditStudio.tsx","apps/web/src/components/material-factory/ExportModal.tsx","apps/web/src/components/material-factory/FactoryShell.tsx","apps/web/src/components/material-factory/InpaintStudio.tsx","apps/web/src/components/material-factory/InstanceGallery.tsx","apps/web/src/components/material-factory/LandingGate.tsx","apps/web/src/components/material-factory/MasterCanvas.tsx","apps/web/src/components/material-factory/ModelConnectionsStudio.tsx","apps/web/src/components/material-factory/ModelOperationsDashboard.tsx","apps/web/src/components/material-factory/ProductionDetail.tsx","apps/web/src/components/material-factory/ReviewCenter.tsx","apps/web/src/components/material-factory/RoleConfirmPanel.tsx","apps/web/src/components/material-factory/ScriptStudio.tsx","apps/web/src/components/material-factory/ShotBoard.tsx","apps/web/src/components/material-factory/StillVersionBar.tsx","apps/web/src/components/material-factory/StoryboardStudio.tsx","apps/web/src/components/material-factory/TaskCenter.tsx","apps/web/src/components/material-factory/TemplateStudio.tsx","apps/web/src/components/material-factory/ui.tsx","apps/web/src/lib/api.ts","apps/web/src/lib/types.ts","apps/web/src/store/useFactoryStore.ts","packages/contracts/src/material.ts","packages/contracts/src/production.ts","packages/contracts/src/script.ts","packages/contracts/src/storyboard.ts","reports/baseline.json","reports/contract-consumers.latest.json","reports/full-transformation-completion-audit.latest.md","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/runtime-acceptance.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/script-acceptance.latest.json","reports/ui-acceptance.desktop.png","reports/ui-acceptance.latest.json","reports/ui-acceptance.mobile.png","reports/ui-acceptance.production.png","reports/validation-source.latest.json","scripts/check-inference-acceptance.mjs","scripts/check-script-acceptance.mjs","services/model-sidecar/main.py"]},{"id":"69d9525d1e38cdb9da1db02f2e25411d2bd4b891","message":"feat(models): route image generation through Bailian Wan 2.7 Pro\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/69d9525d1e38cdb9da1db02f2e25411d2bd4b891","author":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"verification":null,"timestamp":"2026-08-23T17:25:44-07:00","added":[".github/workflows/governance.yml","docs/domain/module-boundary.md","reports/module-boundary.latest.json","scripts/check-module-boundary.mjs"],"removed":[],"modified":[".github/pull_request_template.md","CLAUDE.md","apps/api-fastify/.env.example","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/test/http.acceptance.test.ts","apps/api-fastify/test/material-inference.acceptance.test.ts","apps/api-fastify/test/material-script.acceptance.test.ts","apps/api-fastify/test/model-connector.client.test.ts","apps/api-nestjs/.env.example","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/test/http.acceptance.test.ts","apps/api-nestjs/test/material-inference.acceptance.test.ts","apps/api-nestjs/test/material-production-worker.integration.test.ts","apps/api-nestjs/test/material-script.acceptance.test.ts","apps/api-nestjs/test/model-connector.client.test.ts","apps/web/eslint.config.mjs","apps/web/src/components/material-factory/CreateStudio.tsx","apps/web/src/components/material-factory/ModelConnectionsStudio.tsx","apps/web/src/components/material-factory/ProductionDetail.tsx","deploy/vm/.env.example","deploy/vm/docker-compose.yml","docs/product/controlled-ai-material-factory.md","package.json","packages/contracts/src/material-brand.test.ts","packages/contracts/src/material.test.ts","packages/contracts/src/material.ts","reports/baseline.json","reports/contract-consumers.latest.json","reports/full-transformation-completion-audit.latest.md","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/naming.latest.json","reports/order-concurrency-guard.latest.json","reports/production-acceptance.latest.json","reports/runtime-acceptance.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/script-acceptance.latest.json","reports/ui-acceptance.latest.json","reports/ui-acceptance.mobile.png","reports/validation-source.latest.json","scripts/check-inference-acceptance.mjs","scripts/check-ui-acceptance.mjs","scripts/governance-report.mjs","services/model-sidecar/README.md","services/model-sidecar/main.py"]},{"id":"1bc728c529ae21297108ec097f939ce72e77c3c5","message":"feat(storyboard): persist immutable project history\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/1bc728c529ae21297108ec097f939ce72e77c3c5","author":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"verification":null,"timestamp":"2026-08-23T11:49:04-07:00","added":["apps/api-fastify/prisma/migrations/20260823212000_add_storyboard_version_snapshots/migration.sql","apps/api-nestjs/prisma/migrations/20260823212000_add_storyboard_version_snapshots/migration.sql"],"removed":[],"modified":[".gitignore","CLAUDE.md","apps/api-fastify/prisma/schema.prisma","apps/api-fastify/src/modules/material-factory/material-factory.service.ts","apps/api-fastify/test/http.acceptance.test.ts","apps/api-nestjs/prisma/schema.prisma","apps/api-nestjs/src/material-factory/material-factory.service.ts","apps/api-nestjs/test/http.acceptance.test.ts","apps/web/next.config.ts","apps/web/src/components/material-factory/StoryboardStudio.tsx","apps/web/src/lib/api.ts","apps/web/src/lib/types.ts","reports/contract-consumers.latest.json","reports/full-transformation-completion-audit.latest.md","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/naming.latest.json","reports/order-concurrency-guard.latest.json","reports/production-acceptance.latest.json","reports/runtime-acceptance.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/script-acceptance.latest.json","reports/ui-acceptance.desktop.png","reports/ui-acceptance.latest.json","reports/ui-acceptance.mobile.png","reports/validation-source.latest.json","scripts/check-ui-acceptance.mjs"]},{"id":"753d41978517db6031c10afef2a9a1897f6f7481","message":"fix(models): restore OCR inference and reject LFS pointers\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/753d41978517db6031c10afef2a9a1897f6f7481","author":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"verification":null,"timestamp":"2026-08-23T11:35:43-07:00","added":[],"removed":[],"modified":["CLAUDE.md","models/material-factory/manifest.json","reports/contract-consumers.latest.json","reports/full-transformation-completion-audit.latest.md","reports/governance-docs.latest.json","reports/governance.latest.json","reports/inference-acceptance.latest.json","reports/material-models.latest.json","reports/material-review-concurrency-guard.latest.json","reports/migrations.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/download-material-models.mjs"]}],"total_commits":0,"head_commit":{"id":"e759f5e4509e93cc4968259cc6d6a64bc73c09f1","message":"feat(studio): connect script storyboard and video workflow\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/e759f5e4509e93cc4968259cc6d6a64bc73c09f1","author":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"verification":null,"timestamp":"2026-08-24T01:26:47-07:00","added":["apps/web/src/components/material-factory/PipelineFlow.tsx","packages/contracts/src/script-to-storyboard.test.ts","packages/contracts/src/script-to-storyboard.ts"],"removed":[],"modified":[".claude/launch.json","CLAUDE.md","apps/api-fastify/src/modules/material-factory/material-factory.service.ts","apps/api-fastify/test/material-inference.acceptance.test.ts","apps/api-nestjs/src/material-factory/material-factory.service.ts","apps/api-nestjs/test/material-inference.acceptance.test.ts","apps/web/src/components/material-factory/BrandHub.tsx","apps/web/src/components/material-factory/CreateStudio.tsx","apps/web/src/components/material-factory/FactoryShell.tsx","apps/web/src/components/material-factory/ScriptStudio.tsx","apps/web/src/components/material-factory/StoryboardStudio.tsx","apps/web/src/components/material-factory/VideoStudio.tsx","apps/web/src/components/material-factory/constants.ts","apps/web/src/components/material-factory/storyboard-director.ts","apps/web/src/store/useFactoryStore.ts","apps/web/tsconfig.json","packages/contracts/src/index.ts","packages/contracts/src/material-brand.test.ts","packages/contracts/src/material.ts","packages/contracts/src/storyboard.test.ts","packages/contracts/src/storyboard.ts","reports/contract-consumers.latest.json","reports/full-transformation-completion-audit.latest.md","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/runtime-acceptance.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/script-acceptance.latest.json","reports/ui-acceptance.desktop.png","reports/ui-acceptance.latest.json","reports/ui-acceptance.mobile.png","reports/ui-acceptance.production.png","reports/validation-source.latest.json","scripts/check-naming.mjs","services/model-sidecar/main.py"]},"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":8098,"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":5,"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-08-18T16:58: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
|
1787560925
|
1787561016
|
0
|
1787560925
|
1787561016
|
group: governance-${{ github.workflow }}-${{ githu group: governance-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: "true"
...
|
governance-governance.yml-refs/heads/main
|
1
|
Edit
Delete
|
|
23515
|
Refine image generation modes and custom output si Refine image generation modes and custom output sizing...
|
57
|
5
|
governance.yml
|
2
|
5
|
0
|
refs/heads/main
|
43fb473a0f44228eb0ac2dc41e920e3e5ab523b5
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"e759f5e4509e93cc4968259cc6d6a64bc73c09f1","after":"43fb473a0f44228eb0ac2dc41e920e3e5ab523b5","compare_url":"https://gitea.g-hi.com/luoanwu/image-generation/compare/e759f5e4509e93cc4968259cc6d6a64bc73c09f1...43fb473a0f44228eb0ac2dc41e920e3e5ab523b5","commits":[{"id":"43fb473a0f44228eb0ac2dc41e920e3e5ab523b5","message":"Refine image generation modes and custom output sizing\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/43fb473a0f44228eb0ac2dc41e920e3e5ab523b5","author":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"verification":null,"timestamp":"2026-08-24T02:19:22-07:00","added":["apps/web/public/material-factory/human-review-approved-stamp.png","design-qa.md","reports/login-redesign.comparison.jpg","reports/login-redesign.desktop.png","reports/login-redesign.form-comparison.jpg","reports/login-redesign.mobile.png"],"removed":[],"modified":["CLAUDE.md","apps/web/src/components/material-factory/BrandHub.tsx","apps/web/src/components/material-factory/CreateStudio.tsx","apps/web/src/components/material-factory/LandingGate.tsx","apps/web/src/components/material-factory/ModelConnectionsStudio.tsx","apps/web/src/components/material-factory/brand.ts","packages/contracts/src/material-brand.test.ts","packages/contracts/src/material.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/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/ui-acceptance.desktop.png","reports/ui-acceptance.latest.json","reports/ui-acceptance.mobile.png","reports/ui-acceptance.production.png","reports/validation-source.latest.json","scripts/check-ui-acceptance.mjs"]}],"total_commits":0,"head_commit":{"id":"43fb473a0f44228eb0ac2dc41e920e3e5ab523b5","message":"Refine image generation modes and custom output sizing\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/43fb473a0f44228eb0ac2dc41e920e3e5ab523b5","author":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"verification":null,"timestamp":"2026-08-24T02:19:22-07:00","added":["apps/web/public/material-factory/human-review-approved-stamp.png","design-qa.md","reports/login-redesign.comparison.jpg","reports/login-redesign.desktop.png","reports/login-redesign.form-comparison.jpg","reports/login-redesign.mobile.png"],"removed":[],"modified":["CLAUDE.md","apps/web/src/components/material-factory/BrandHub.tsx","apps/web/src/components/material-factory/CreateStudio.tsx","apps/web/src/components/material-factory/LandingGate.tsx","apps/web/src/components/material-factory/ModelConnectionsStudio.tsx","apps/web/src/components/material-factory/brand.ts","packages/contracts/src/material-brand.test.ts","packages/contracts/src/material.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/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/ui-acceptance.desktop.png","reports/ui-acceptance.latest.json","reports/ui-acceptance.mobile.png","reports/ui-acceptance.production.png","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":12509,"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":5,"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-08-24T16:42: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
|
1787563172
|
1787563263
|
0
|
1787563171
|
1787563263
|
group: governance-${{ github.workflow }}-${{ githu group: governance-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: "true"
...
|
governance-governance.yml-refs/heads/main
|
1
|
Edit
Delete
|
|
23518
|
feat(marketing): add HI Atelier 4K poster series
|
57
|
5
|
governance.yml
|
3
|
5
|
0
|
refs/heads/main
|
ba48645a4237735976c13184c3aac435bc868949
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"43fb473a0f44228eb0ac2dc41e920e3e5ab523b5","after":"ba48645a4237735976c13184c3aac435bc868949","compare_url":"https://gitea.g-hi.com/luoanwu/image-generation/compare/43fb473a0f44228eb0ac2dc41e920e3e5ab523b5...ba48645a4237735976c13184c3aac435bc868949","commits":[{"id":"ba48645a4237735976c13184c3aac435bc868949","message":"feat(marketing): add HI Atelier 4K poster series\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/ba48645a4237735976c13184c3aac435bc868949","author":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"verification":null,"timestamp":"2026-08-24T07:05:38-07:00","added":["output/hi-atelier-posters-4k/backgrounds/poster-01-brand-standard.png","output/hi-atelier-posters-4k/backgrounds/poster-02-dual-mode.png","output/hi-atelier-posters-4k/backgrounds/poster-03-storyboard-video.png","output/hi-atelier-posters-4k/backgrounds/poster-04-quality-delivery.png","output/hi-atelier-posters-4k/final/01-brand-standard-4k.png","output/hi-atelier-posters-4k/final/02-dual-mode-4k.png","output/hi-atelier-posters-4k/final/03-story-to-screen-4k.png","output/hi-atelier-posters-4k/final/04-proof-first-delivery-4k.png","output/hi-atelier-posters-4k/final/contact-sheet.jpg","output/hi-atelier-posters-4k/manifest.json","output/hi-atelier-posters-4k/provenance.md","output/hi-atelier-posters-4k/render_posters.py"],"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/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/startup-acceptance.latest.json","reports/validation-source.latest.json"]}],"total_commits":0,"head_commit":{"id":"ba48645a4237735976c13184c3aac435bc868949","message":"feat(marketing): add HI Atelier 4K poster series\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/ba48645a4237735976c13184c3aac435bc868949","author":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"verification":null,"timestamp":"2026-08-24T07:05:38-07:00","added":["output/hi-atelier-posters-4k/backgrounds/poster-01-brand-standard.png","output/hi-atelier-posters-4k/backgrounds/poster-02-dual-mode.png","output/hi-atelier-posters-4k/backgrounds/poster-03-storyboard-video.png","output/hi-atelier-posters-4k/backgrounds/poster-04-quality-delivery.png","output/hi-atelier-posters-4k/final/01-brand-standard-4k.png","output/hi-atelier-posters-4k/final/02-dual-mode-4k.png","output/hi-atelier-posters-4k/final/03-story-to-screen-4k.png","output/hi-atelier-posters-4k/final/04-proof-first-delivery-4k.png","output/hi-atelier-posters-4k/final/contact-sheet.jpg","output/hi-atelier-posters-4k/manifest.json","output/hi-atelier-posters-4k/provenance.md","output/hi-atelier-posters-4k/render_posters.py"],"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/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/startup-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":13414,"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":5,"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-08-24T17:19:31+08:00","archived_at":"1970-01-01T08:00:00+08:00","permissions":{"admin":true,"push":true,"pull":true},"has_code":true,"has_issues":true,"internal_tracker":{"enable_time_tracker":true,"allow_only_contributors_to_track_time":true,"enable_issue_dependencies":true},"has_wiki":true,"has_pull_requests":true,"has_projects":true,"projects_mode":"all","has_releases":true,"has_packages":true,"has_actions":true,"ignore_whitespace_conflicts":false,"allow_merge_commits":true,"allow_rebase":true,"allow_rebase_explicit":true,"allow_squash_merge":true,"allow_fast_forward_only_merge":true,"allow_rebase_update":true,"allow_manual_merge":false,"autodetect_manual_merge":false,"default_delete_branch_after_merge":false,"default_merge_style":"merge","default_allow_maintainer_edit":true,"avatar_url":"","internal":false,"mirror_interval":"","object_format_name":"sha1","mirror_updated":"0001-01-01T00:00:00Z","topics":[],"licenses":[]},"pusher":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"sender":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"}}...
|
push
|
2
|
4
|
1787581007
|
1787581098
|
0
|
1787581007
|
1787581098
|
group: governance-${{ github.workflow }}-${{ githu group: governance-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: "true"
...
|
governance-governance.yml-refs/heads/main
|
1
|
Edit
Delete
|
|
23521
|
feat(image-edit): harden masked editing acceptance
|
57
|
5
|
governance.yml
|
4
|
5
|
0
|
refs/heads/main
|
7a7e42422a19f6ad4c86d4cd320119a7fc912885
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"ba48645a4237735976c13184c3aac435bc868949","after":"7a7e42422a19f6ad4c86d4cd320119a7fc912885","compare_url":"https://gitea.g-hi.com/luoanwu/image-generation/compare/ba48645a4237735976c13184c3aac435bc868949...7a7e42422a19f6ad4c86d4cd320119a7fc912885","commits":[{"id":"7a7e42422a19f6ad4c86d4cd320119a7fc912885","message":"feat(image-edit): harden masked editing acceptance\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/7a7e42422a19f6ad4c86d4cd320119a7fc912885","author":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"verification":null,"timestamp":"2026-08-25T09:34:04-07:00","added":["apps/api-fastify/prisma/migrations/20260825090000_add_render_job_edit_sources/migration.sql","apps/api-nestjs/prisma/migrations/20260825090000_add_render_job_edit_sources/migration.sql","scripts/lib/source-fingerprint.mjs","services/model-sidecar/test_mask_composite.py"],"removed":[],"modified":["CLAUDE.md","apps/api-fastify/prisma/schema.prisma","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/routes/material-factory.ts","apps/api-fastify/test/material-inference.acceptance.test.ts","apps/api-nestjs/prisma/schema.prisma","apps/api-nestjs/src/material-factory/material-factory.controller.ts","apps/api-nestjs/src/material-factory/material-factory.service.ts","apps/api-nestjs/src/material-factory/material-sidecar.client.ts","apps/api-nestjs/test/material-inference.acceptance.test.ts","apps/web/src/components/material-factory/CreateStudio.tsx","apps/web/src/components/material-factory/FactoryShell.tsx","apps/web/src/components/material-factory/InpaintStudio.tsx","apps/web/src/components/material-factory/queries.ts","apps/web/src/lib/api.ts","apps/web/src/lib/types.ts","apps/web/src/store/useFactoryStore.ts","packages/contracts/src/material.test.ts","packages/contracts/src/material.ts","reports/contract-consumers.latest.json","reports/full-transformation-completion-audit.latest.md","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/runtime-acceptance.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/ui-acceptance.desktop.png","reports/ui-acceptance.latest.json","reports/ui-acceptance.mobile.png","reports/ui-acceptance.production.png","reports/validation-source.latest.json","scripts/check-inference-acceptance.mjs","scripts/check-production-acceptance.mjs","scripts/check-runtime-acceptance.mjs","scripts/check-ui-acceptance.mjs","scripts/governance-report.mjs","services/model-sidecar/main.py"]}],"total_commits":0,"head_commit":{"id":"7a7e42422a19f6ad4c86d4cd320119a7fc912885","message":"feat(image-edit): harden masked editing acceptance\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/7a7e42422a19f6ad4c86d4cd320119a7fc912885","author":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"verification":null,"timestamp":"2026-08-25T09:34:04-07:00","added":["apps/api-fastify/prisma/migrations/20260825090000_add_render_job_edit_sources/migration.sql","apps/api-nestjs/prisma/migrations/20260825090000_add_render_job_edit_sources/migration.sql","scripts/lib/source-fingerprint.mjs","services/model-sidecar/test_mask_composite.py"],"removed":[],"modified":["CLAUDE.md","apps/api-fastify/prisma/schema.prisma","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/routes/material-factory.ts","apps/api-fastify/test/material-inference.acceptance.test.ts","apps/api-nestjs/prisma/schema.prisma","apps/api-nestjs/src/material-factory/material-factory.controller.ts","apps/api-nestjs/src/material-factory/material-factory.service.ts","apps/api-nestjs/src/material-factory/material-sidecar.client.ts","apps/api-nestjs/test/material-inference.acceptance.test.ts","apps/web/src/components/material-factory/CreateStudio.tsx","apps/web/src/components/material-factory/FactoryShell.tsx","apps/web/src/components/material-factory/InpaintStudio.tsx","apps/web/src/components/material-factory/queries.ts","apps/web/src/lib/api.ts","apps/web/src/lib/types.ts","apps/web/src/store/useFactoryStore.ts","packages/contracts/src/material.test.ts","packages/contracts/src/material.ts","reports/contract-consumers.latest.json","reports/full-transformation-completion-audit.latest.md","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/runtime-acceptance.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/ui-acceptance.desktop.png","reports/ui-acceptance.latest.json","reports/ui-acceptance.mobile.png","reports/ui-acceptance.production.png","reports/validation-source.latest.json","scripts/check-inference-acceptance.mjs","scripts/check-production-acceptance.mjs","scripts/check-runtime-acceptance.mjs","scripts/check-ui-acceptance.mjs","scripts/governance-report.mjs","services/model-sidecar/main.py"]},"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":43836,"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":5,"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-08-24T22:16: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
|
1787675667
|
1787675695
|
0
|
1787675666
|
1787675695
|
group: governance-${{ github.workflow }}-${{ githu group: governance-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: "true"
...
|
governance-governance.yml-refs/heads/main
|
1
|
Edit
Delete
|
|
23522
|
fix(governance): make source fingerprints commit-s fix(governance): make source fingerprints commit-stable...
|
57
|
5
|
governance.yml
|
5
|
5
|
0
|
refs/heads/main
|
f094101357dc511e450e0e18fab5c91baaed9865
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"7a7e42422a19f6ad4c86d4cd320119a7fc912885","after":"f094101357dc511e450e0e18fab5c91baaed9865","compare_url":"https://gitea.g-hi.com/luoanwu/image-generation/compare/7a7e42422a19f6ad4c86d4cd320119a7fc912885...f094101357dc511e450e0e18fab5c91baaed9865","commits":[{"id":"f094101357dc511e450e0e18fab5c91baaed9865","message":"fix(governance): make source fingerprints commit-stable\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/f094101357dc511e450e0e18fab5c91baaed9865","author":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"verification":null,"timestamp":"2026-08-25T09:40:28-07:00","added":[],"removed":[],"modified":["reports/contract-consumers.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/runtime-acceptance.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/ui-acceptance.desktop.png","reports/ui-acceptance.latest.json","reports/ui-acceptance.mobile.png","reports/ui-acceptance.production.png","reports/validation-source.latest.json","scripts/lib/source-fingerprint.mjs"]}],"total_commits":0,"head_commit":{"id":"f094101357dc511e450e0e18fab5c91baaed9865","message":"fix(governance): make source fingerprints commit-stable\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/f094101357dc511e450e0e18fab5c91baaed9865","author":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"verification":null,"timestamp":"2026-08-25T09:40:28-07:00","added":[],"removed":[],"modified":["reports/contract-consumers.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/runtime-acceptance.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/ui-acceptance.desktop.png","reports/ui-acceptance.latest.json","reports/ui-acceptance.mobile.png","reports/ui-acceptance.production.png","reports/validation-source.latest.json","scripts/lib/source-fingerprint.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":44400,"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":5,"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-08-26T00:34: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":true,"avatar_url":"","internal":false,"mirror_interval":"","object_format_name":"sha1","mirror_updated":"0001-01-01T00:00:00Z","topics":[],"licenses":[]},"pusher":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"sender":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"}}...
|
push
|
1
|
4
|
1787676047
|
1787676095
|
0
|
1787676046
|
1787676095
|
group: governance-${{ github.workflow }}-${{ githu group: governance-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: "true"
...
|
governance-governance.yml-refs/heads/main
|
1
|
Edit
Delete
|
|
23523
|
feat(governance): harden formal production trust b feat(governance): harden formal production trust boundaries...
|
57
|
5
|
governance.yml
|
6
|
5
|
0
|
refs/heads/main
|
8e23fd115535dda184b584cb62396fa8286ef383
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"f094101357dc511e450e0e18fab5c91baaed9865","after":"8e23fd115535dda184b584cb62396fa8286ef383","compare_url":"https://gitea.g-hi.com/luoanwu/image-generation/compare/f094101357dc511e450e0e18fab5c91baaed9865...8e23fd115535dda184b584cb62396fa8286ef383","commits":[{"id":"8e23fd115535dda184b584cb62396fa8286ef383","message":"feat(governance): harden formal production trust boundaries\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/8e23fd115535dda184b584cb62396fa8286ef383","author":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"verification":null,"timestamp":"2026-08-25T17:46:37-07:00","added":["apps/api-fastify/src/modules/material-production/runtime-trust.ts","apps/api-fastify/test/material-runtime-trust.test.ts","apps/api-nestjs/src/common/material-runtime.guard.ts","apps/api-nestjs/test/material-runtime-guard.test.ts","reports/production-security.latest.json","scripts/check-production-security.mjs"],"removed":[],"modified":["CLAUDE.md","apps/api-fastify/src/app.ts","apps/api-fastify/src/modules/material-factory/material-factory.service.ts","apps/api-fastify/src/modules/material-production/material-production.service.ts","apps/api-fastify/src/modules/material-production/object-storage.service.ts","apps/api-fastify/src/routes/material-factory.ts","apps/api-fastify/src/routes/material-production.ts","apps/api-fastify/test/http.acceptance.test.ts","apps/api-fastify/test/material-production.integration.test.ts","apps/api-fastify/test/model-connector.client.test.ts","apps/api-nestjs/src/create-app.ts","apps/api-nestjs/src/material-factory/material-factory.controller.ts","apps/api-nestjs/src/material-factory/material-factory.service.ts","apps/api-nestjs/src/material-production/material-production.controller.ts","apps/api-nestjs/src/material-production/material-production.service.ts","apps/api-nestjs/src/material-production/object-storage.service.ts","apps/api-nestjs/test/http.acceptance.test.ts","apps/api-nestjs/test/material-production.integration.test.ts","apps/api-nestjs/test/model-connector.client.test.ts","apps/web/src/components/material-factory/ProductionDetail.tsx","apps/web/src/lib/api.ts","apps/web/src/lib/types.ts","deploy/vm/.env.example","deploy/vm/docker-compose.yml","docs/deploy-vm.md","docs/domain/material-production-blueprint.md","package.json","packages/contracts/src/material-brand.test.ts","packages/contracts/src/material.ts","packages/contracts/src/production.ts","reports/adversarial-acceptance-audit.latest.md","reports/baseline.json","reports/contract-consumers.latest.json","reports/full-transformation-completion-audit.latest.md","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/runtime-acceptance.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/storyboard-director-guard.latest.json","reports/ui-acceptance.desktop.png","reports/ui-acceptance.latest.json","reports/ui-acceptance.mobile.png","reports/ui-acceptance.production.png","reports/validation-source.latest.json","scripts/check-ui-acceptance.mjs","scripts/governance-report.mjs"]},{"id":"58ffde2d1e2a662a18b4fadf901b0f6f5233f30a","message":"feat: 完善分镜导演终审与对抗治理\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/58ffde2d1e2a662a18b4fadf901b0f6f5233f30a","author":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"verification":null,"timestamp":"2026-08-25T11:55:23-07:00","added":["Codex 图像 2026年8月24日 02_24_17.jpg","apps/api-fastify/prisma/migrations/20260825103000_creative_support_skills/migration.sql","apps/api-fastify/prisma/migrations/20260825130000_director_spec_qc/migration.sql","apps/api-fastify/prisma/migrations/20260825134500_storyboard_delivery_variants/migration.sql","apps/api-nestjs/prisma/migrations/20260825103000_creative_support_skills/migration.sql","apps/api-nestjs/prisma/migrations/20260825130000_director_spec_qc/migration.sql","apps/api-nestjs/prisma/migrations/20260825134500_storyboard_delivery_variants/migration.sql","apps/web/src/components/material-factory/CreativeSupportSkills.tsx","apps/web/src/components/material-factory/DirectorReviewWorkbench.tsx","packages/contracts/src/creative-support.test.ts","packages/contracts/src/creative-support.ts","packages/contracts/src/director-spec.test.ts","packages/contracts/src/director-spec.ts","reports/adversarial-acceptance-audit.latest.md","reports/storyboard-director-guard.latest.json","scripts/check-storyboard-director-guard.mjs"],"removed":[],"modified":["CLAUDE.md","apps/api-fastify/prisma/schema.prisma","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/shooting-script.service.ts","apps/api-fastify/src/routes/material-factory.ts","apps/api-fastify/test/http.acceptance.test.ts","apps/api-fastify/test/material-inference.acceptance.test.ts","apps/api-nestjs/prisma/schema.prisma","apps/api-nestjs/src/material-factory/material-factory.controller.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/shooting-script.service.ts","apps/api-nestjs/test/http.acceptance.test.ts","apps/api-nestjs/test/material-inference.acceptance.test.ts","apps/web/package.json","apps/web/src/components/material-factory/CreateStudio.tsx","apps/web/src/components/material-factory/ScriptStudio.tsx","apps/web/src/components/material-factory/StoryboardStudio.tsx","apps/web/src/components/material-factory/VideoStudio.tsx","apps/web/src/lib/api.ts","apps/web/src/lib/types.ts","package.json","packages/contracts/src/index.ts","packages/contracts/src/material.ts","packages/contracts/src/script-to-storyboard.test.ts","packages/contracts/src/script-to-storyboard.ts","packages/contracts/src/script.ts","packages/contracts/src/storyboard.ts","pnpm-lock.yaml","reports/baseline.json","reports/contract-consumers.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/runtime-acceptance.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/ui-acceptance.desktop.png","reports/ui-acceptance.latest.json","reports/ui-acceptance.mobile.png","reports/ui-acceptance.production.png","reports/validation-source.latest.json","scripts/check-ui-acceptance.mjs","scripts/governance-report.mjs"]}],"total_commits":0,"head_commit":{"id":"8e23fd115535dda184b584cb62396fa8286ef383","message":"feat(governance): harden formal production trust boundaries\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/8e23fd115535dda184b584cb62396fa8286ef383","author":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"verification":null,"timestamp":"2026-08-25T17:46:37-07:00","added":["apps/api-fastify/src/modules/material-production/runtime-trust.ts","apps/api-fastify/test/material-runtime-trust.test.ts","apps/api-nestjs/src/common/material-runtime.guard.ts","apps/api-nestjs/test/material-runtime-guard.test.ts","reports/production-security.latest.json","scripts/check-production-security.mjs"],"removed":[],"modified":["CLAUDE.md","apps/api-fastify/src/app.ts","apps/api-fastify/src/modules/material-factory/material-factory.service.ts","apps/api-fastify/src/modules/material-production/material-production.service.ts","apps/api-fastify/src/modules/material-production/object-storage.service.ts","apps/api-fastify/src/routes/material-factory.ts","apps/api-fastify/src/routes/material-production.ts","apps/api-fastify/test/http.acceptance.test.ts","apps/api-fastify/test/material-production.integration.test.ts","apps/api-fastify/test/model-connector.client.test.ts","apps/api-nestjs/src/create-app.ts","apps/api-nestjs/src/material-factory/material-factory.controller.ts","apps/api-nestjs/src/material-factory/material-factory.service.ts","apps/api-nestjs/src/material-production/material-production.controller.ts","apps/api-nestjs/src/material-production/material-production.service.ts","apps/api-nestjs/src/material-production/object-storage.service.ts","apps/api-nestjs/test/http.acceptance.test.ts","apps/api-nestjs/test/material-production.integration.test.ts","apps/api-nestjs/test/model-connector.client.test.ts","apps/web/src/components/material-factory/ProductionDetail.tsx","apps/web/src/lib/api.ts","apps/web/src/lib/types.ts","deploy/vm/.env.example","deploy/vm/docker-compose.yml","docs/deploy-vm.md","docs/domain/material-production-blueprint.md","package.json","packages/contracts/src/material-brand.test.ts","packages/contracts/src/material.ts","packages/contracts/src/production.ts","reports/adversarial-acceptance-audit.latest.md","reports/baseline.json","reports/contract-consumers.latest.json","reports/full-transformation-completion-audit.latest.md","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/runtime-acceptance.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/storyboard-director-guard.latest.json","reports/ui-acceptance.desktop.png","reports/ui-acceptance.latest.json","reports/ui-acceptance.mobile.png","reports/ui-acceptance.production.png","reports/validation-source.latest.json","scripts/check-ui-acceptance.mjs","scripts/governance-report.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":44687,"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":5,"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-08-26T00:40:46+08:00","archived_at":"1970-01-01T08:00:00+08:00","permissions":{"admin":true,"push":true,"pull":true},"has_code":true,"has_issues":true,"internal_tracker":{"enable_time_tracker":true,"allow_only_contributors_to_track_time":true,"enable_issue_dependencies":true},"has_wiki":true,"has_pull_requests":true,"has_projects":true,"projects_mode":"all","has_releases":true,"has_packages":true,"has_actions":true,"ignore_whitespace_conflicts":false,"allow_merge_commits":true,"allow_rebase":true,"allow_rebase_explicit":true,"allow_squash_merge":true,"allow_fast_forward_only_merge":true,"allow_rebase_update":true,"allow_manual_merge":false,"autodetect_manual_merge":false,"default_delete_branch_after_merge":false,"default_merge_style":"merge","default_allow_maintainer_edit":true,"avatar_url":"","internal":false,"mirror_interval":"","object_format_name":"sha1","mirror_updated":"0001-01-01T00:00:00Z","topics":[],"licenses":[]},"pusher":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"sender":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"}}...
|
push
|
1
|
4
|
1787705227
|
1787705287
|
0
|
1787705225
|
1787705287
|
group: governance-${{ github.workflow }}-${{ githu group: governance-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: "true"
...
|
governance-governance.yml-refs/heads/main
|
1
|
Edit
Delete
|
|
23525
|
Refresh UI acceptance evidence
|
57
|
5
|
governance.yml
|
7
|
5
|
0
|
refs/heads/main
|
cf66be23009de5ecbefad6083c173eb1df3f4c8b
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"8e23fd115535dda184b584cb62396fa8286ef383","after":"cf66be23009de5ecbefad6083c173eb1df3f4c8b","compare_url":"https://gitea.g-hi.com/luoanwu/image-generation/compare/8e23fd115535dda184b584cb62396fa8286ef383...cf66be23009de5ecbefad6083c173eb1df3f4c8b","commits":[{"id":"cf66be23009de5ecbefad6083c173eb1df3f4c8b","message":"Refresh UI acceptance evidence\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/cf66be23009de5ecbefad6083c173eb1df3f4c8b","author":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"verification":null,"timestamp":"2026-08-25T17:52:24-07:00","added":[".playwright-cli/page-2026-08-26T00-51-22-049Z.yml",".playwright-cli/page-2026-08-26T00-51-44-022Z.yml",".playwright-cli/page-2026-08-26T00-51-59-765Z.yml"],"removed":[],"modified":["reports/ui-acceptance.desktop.png","reports/ui-acceptance.latest.json","reports/ui-acceptance.mobile.png","reports/ui-acceptance.production.png"]}],"total_commits":0,"head_commit":{"id":"cf66be23009de5ecbefad6083c173eb1df3f4c8b","message":"Refresh UI acceptance evidence\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/cf66be23009de5ecbefad6083c173eb1df3f4c8b","author":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"verification":null,"timestamp":"2026-08-25T17:52:24-07:00","added":[".playwright-cli/page-2026-08-26T00-51-22-049Z.yml",".playwright-cli/page-2026-08-26T00-51-44-022Z.yml",".playwright-cli/page-2026-08-26T00-51-59-765Z.yml"],"removed":[],"modified":["reports/ui-acceptance.desktop.png","reports/ui-acceptance.latest.json","reports/ui-acceptance.mobile.png","reports/ui-acceptance.production.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":46243,"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":5,"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-08-26T08:47: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
|
1
|
4
|
1787705553
|
1787705605
|
0
|
1787705552
|
1787705605
|
group: governance-${{ github.workflow }}-${{ githu group: governance-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: "true"
...
|
governance-governance.yml-refs/heads/main
|
1
|
Edit
Delete
|
|
23540
|
feat(web): improve end-to-end creation UX
|
57
|
5
|
governance.yml
|
8
|
5
|
0
|
refs/heads/main
|
0c21eecc828c12daebc00845c14482c3b9d58823
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"cf66be23009de5ecbefad6083c173eb1df3f4c8b","after":"0c21eecc828c12daebc00845c14482c3b9d58823","compare_url":"https://gitea.g-hi.com/luoanwu/image-generation/compare/cf66be23009de5ecbefad6083c173eb1df3f4c8b...0c21eecc828c12daebc00845c14482c3b9d58823","commits":[{"id":"0c21eecc828c12daebc00845c14482c3b9d58823","message":"feat(web): improve end-to-end creation UX\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/0c21eecc828c12daebc00845c14482c3b9d58823","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-08-28T19:18:11-07:00","added":["docs/product/creative-workflow-analysis.md","reports/creative-workflow-audit/01-entry.png","reports/creative-workflow-audit/02-workspace-empty.png","reports/creative-workflow-audit/03-script-start.png","reports/creative-workflow-audit/README.md","reports/full-ux-audit-2026-08-28/01-entry-desktop.png","reports/full-ux-audit-2026-08-28/02-brand-empty-desktop.png","reports/full-ux-audit-2026-08-28/03-image-create-desktop.png","reports/full-ux-audit-2026-08-28/04-storyboard-desktop.png","reports/full-ux-audit-2026-08-28/05-production-tasks-desktop.png","reports/full-ux-audit-2026-08-28/06-production-tasks-mobile.png","reports/full-ux-audit-2026-08-28/07-image-create-mobile.png","reports/full-ux-audit-2026-08-28/08-script-mobile.png","reports/full-ux-audit-2026-08-28/README.md"],"removed":[],"modified":["apps/web/src/app/globals.css","apps/web/src/components/material-factory/BrandHub.tsx","apps/web/src/components/material-factory/DeliveryCenter.tsx","apps/web/src/components/material-factory/FactoryShell.tsx","apps/web/src/components/material-factory/PipelineFlow.tsx","apps/web/src/components/material-factory/ReviewCenter.tsx","apps/web/src/components/material-factory/ScriptStudio.tsx","apps/web/src/components/material-factory/TaskCenter.tsx","apps/web/src/components/material-factory/ui.tsx","apps/web/src/store/useFactoryStore.ts"]}],"total_commits":0,"head_commit":{"id":"0c21eecc828c12daebc00845c14482c3b9d58823","message":"feat(web): improve end-to-end creation UX\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/0c21eecc828c12daebc00845c14482c3b9d58823","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-08-28T19:18:11-07:00","added":["docs/product/creative-workflow-analysis.md","reports/creative-workflow-audit/01-entry.png","reports/creative-workflow-audit/02-workspace-empty.png","reports/creative-workflow-audit/03-script-start.png","reports/creative-workflow-audit/README.md","reports/full-ux-audit-2026-08-28/01-entry-desktop.png","reports/full-ux-audit-2026-08-28/02-brand-empty-desktop.png","reports/full-ux-audit-2026-08-28/03-image-create-desktop.png","reports/full-ux-audit-2026-08-28/04-storyboard-desktop.png","reports/full-ux-audit-2026-08-28/05-production-tasks-desktop.png","reports/full-ux-audit-2026-08-28/06-production-tasks-mobile.png","reports/full-ux-audit-2026-08-28/07-image-create-mobile.png","reports/full-ux-audit-2026-08-28/08-script-mobile.png","reports/full-ux-audit-2026-08-28/README.md"],"removed":[],"modified":["apps/web/src/app/globals.css","apps/web/src/components/material-factory/BrandHub.tsx","apps/web/src/components/material-factory/DeliveryCenter.tsx","apps/web/src/components/material-factory/FactoryShell.tsx","apps/web/src/components/material-factory/PipelineFlow.tsx","apps/web/src/components/material-factory/ReviewCenter.tsx","apps/web/src/components/material-factory/ScriptStudio.tsx","apps/web/src/components/material-factory/TaskCenter.tsx","apps/web/src/components/material-factory/ui.tsx","apps/web/src/store/useFactoryStore.ts"]},"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":46791,"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":5,"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-08-27T14:47:07+08:00","archived_at":"1970-01-01T08:00:00+08:00","permissions":{"admin":true,"push":true,"pull":true},"has_code":true,"has_issues":true,"internal_tracker":{"enable_time_tracker":true,"allow_only_contributors_to_track_time":true,"enable_issue_dependencies":true},"has_wiki":true,"has_pull_requests":true,"has_projects":true,"projects_mode":"all","has_releases":true,"has_packages":true,"has_actions":true,"ignore_whitespace_conflicts":false,"allow_merge_commits":true,"allow_rebase":true,"allow_rebase_explicit":true,"allow_squash_merge":true,"allow_fast_forward_only_merge":true,"allow_rebase_update":true,"allow_manual_merge":false,"autodetect_manual_merge":false,"default_delete_branch_after_merge":false,"default_merge_style":"merge","default_allow_maintainer_edit":true,"avatar_url":"","internal":false,"mirror_interval":"","object_format_name":"sha1","mirror_updated":"0001-01-01T00:00:00Z","topics":[],"licenses":[]},"pusher":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"sender":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"}}...
|
push
|
2
|
4
|
1787969912
|
1787969939
|
0
|
1787969911
|
1787969939
|
group: governance-${{ github.workflow }}-${{ githu group: governance-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: "true"
...
|
governance-governance.yml-refs/heads/main
|
1
|
Edit
Delete
|
|
23580
|
feat: add governed public file delivery
|
57
|
5
|
governance.yml
|
9
|
5
|
0
|
refs/heads/main
|
c16f03b05ec70a53ac99f27dc7901ad3ad99a45a
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"0c21eecc828c12daebc00845c14482c3b9d58823","after":"c16f03b05ec70a53ac99f27dc7901ad3ad99a45a","compare_url":"https://gitea.g-hi.com/luoanwu/image-generation/compare/0c21eecc828c12daebc00845c14482c3b9d58823...c16f03b05ec70a53ac99f27dc7901ad3ad99a45a","commits":[{"id":"c16f03b05ec70a53ac99f27dc7901ad3ad99a45a","message":"feat: add governed public file delivery\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/c16f03b05ec70a53ac99f27dc7901ad3ad99a45a","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-08-31T19:41:05-07:00","added":["packages/public-file/README.md","packages/public-file/package.json","packages/public-file/src/index.test.ts","packages/public-file/src/index.ts","packages/public-file/src/infrastructure.integration.test.ts","packages/public-file/src/ref.test.ts","packages/public-file/src/ref.ts","packages/public-file/tsconfig.json","reports/public-file-acceptance.latest.json","reports/public-file-integration.latest.json","scripts/check-public-file-acceptance.mjs","scripts/check-public-file-integration.mjs"],"removed":[],"modified":["CLAUDE.md","apps/api-fastify/package.json","apps/api-fastify/src/modules/material-production/object-storage.service.ts","apps/api-fastify/test/object-storage.integration.test.ts","apps/api-nestjs/package.json","apps/api-nestjs/src/material-production/object-storage.service.ts","apps/api-nestjs/test/object-storage.integration.test.ts","deploy/vm/.env.example","deploy/vm/Caddyfile","deploy/vm/docker-compose.yml","deploy/vm/sidecar.Dockerfile","docs/domain/material-production-blueprint.md","docs/domain/owner-matrix.md","models/material-factory/manifest.json","models/material-factory/paddleocr/PP-LCNet_x1_0_doc_ori_infer/README.md","package.json","pnpm-lock.yaml","reports/adversarial-acceptance-audit.latest.md","reports/baseline.json","reports/contract-consumers.latest.json","reports/governance-docs.latest.json","reports/governance.latest.json","reports/inference-acceptance.latest.json","reports/material-models.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/runtime-acceptance.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/startup-acceptance.latest.json","reports/storyboard-director-guard.latest.json","reports/ui-acceptance.desktop.png","reports/ui-acceptance.latest.json","reports/ui-acceptance.mobile.png","reports/ui-acceptance.production.png","reports/validation-source.latest.json","scripts/check-ui-acceptance.mjs","scripts/governance-report.mjs","services/model-sidecar/main.py","turbo.json"]}],"total_commits":0,"head_commit":{"id":"c16f03b05ec70a53ac99f27dc7901ad3ad99a45a","message":"feat: add governed public file delivery\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/c16f03b05ec70a53ac99f27dc7901ad3ad99a45a","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-08-31T19:41:05-07:00","added":["packages/public-file/README.md","packages/public-file/package.json","packages/public-file/src/index.test.ts","packages/public-file/src/index.ts","packages/public-file/src/infrastructure.integration.test.ts","packages/public-file/src/ref.test.ts","packages/public-file/src/ref.ts","packages/public-file/tsconfig.json","reports/public-file-acceptance.latest.json","reports/public-file-integration.latest.json","scripts/check-public-file-acceptance.mjs","scripts/check-public-file-integration.mjs"],"removed":[],"modified":["CLAUDE.md","apps/api-fastify/package.json","apps/api-fastify/src/modules/material-production/object-storage.service.ts","apps/api-fastify/test/object-storage.integration.test.ts","apps/api-nestjs/package.json","apps/api-nestjs/src/material-production/object-storage.service.ts","apps/api-nestjs/test/object-storage.integration.test.ts","deploy/vm/.env.example","deploy/vm/Caddyfile","deploy/vm/docker-compose.yml","deploy/vm/sidecar.Dockerfile","docs/domain/material-production-blueprint.md","docs/domain/owner-matrix.md","models/material-factory/manifest.json","models/material-factory/paddleocr/PP-LCNet_x1_0_doc_ori_infer/README.md","package.json","pnpm-lock.yaml","reports/adversarial-acceptance-audit.latest.md","reports/baseline.json","reports/contract-consumers.latest.json","reports/governance-docs.latest.json","reports/governance.latest.json","reports/inference-acceptance.latest.json","reports/material-models.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/runtime-acceptance.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/startup-acceptance.latest.json","reports/storyboard-director-guard.latest.json","reports/ui-acceptance.desktop.png","reports/ui-acceptance.latest.json","reports/ui-acceptance.mobile.png","reports/ui-acceptance.production.png","reports/validation-source.latest.json","scripts/check-ui-acceptance.mjs","scripts/governance-report.mjs","services/model-sidecar/main.py","turbo.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":47253,"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":5,"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-08-29T10:18:31+08:00","archived_at":"1970-01-01T08:00:00+08:00","permissions":{"admin":true,"push":true,"pull":true},"has_code":true,"has_issues":true,"internal_tracker":{"enable_time_tracker":true,"allow_only_contributors_to_track_time":true,"enable_issue_dependencies":true},"has_wiki":true,"has_pull_requests":true,"has_projects":true,"projects_mode":"all","has_releases":true,"has_packages":true,"has_actions":true,"ignore_whitespace_conflicts":false,"allow_merge_commits":true,"allow_rebase":true,"allow_rebase_explicit":true,"allow_squash_merge":true,"allow_fast_forward_only_merge":true,"allow_rebase_update":true,"allow_manual_merge":false,"autodetect_manual_merge":false,"default_delete_branch_after_merge":false,"default_merge_style":"merge","default_allow_maintainer_edit":true,"avatar_url":"","internal":false,"mirror_interval":"","object_format_name":"sha1","mirror_updated":"0001-01-01T00:00:00Z","topics":[],"licenses":[]},"pusher":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"sender":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"}}...
|
push
|
2
|
4
|
1788230491
|
1788230788
|
0
|
1788230491
|
1788230788
|
group: governance-${{ github.workflow }}-${{ githu group: governance-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: "true"
...
|
governance-governance.yml-refs/heads/main
|
1
|
Edit
Delete
|
|
23581
|
merge: integrate all remaining branches
|
57
|
5
|
governance.yml
|
10
|
5
|
0
|
refs/heads/main
|
b3a5c0dc690884729878b7f4cce1adbad046be14
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"c16f03b05ec70a53ac99f27dc7901ad3ad99a45a","after":"b3a5c0dc690884729878b7f4cce1adbad046be14","compare_url":"https://gitea.g-hi.com/luoanwu/image-generation/compare/c16f03b05ec70a53ac99f27dc7901ad3ad99a45a...b3a5c0dc690884729878b7f4cce1adbad046be14","commits":[{"id":"b3a5c0dc690884729878b7f4cce1adbad046be14","message":"merge: integrate all remaining branches\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/b3a5c0dc690884729878b7f4cce1adbad046be14","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-08-31T20:19:35-07:00","added":["apps/api-fastify/prisma/migrations/20260814120000_cloud_generate_kind/migration.sql","apps/api-fastify/prisma/migrations/20260817140000_lyric_storyboards/migration.sql","apps/api-nestjs/prisma/migrations/20260814120000_cloud_generate_kind/migration.sql","apps/api-nestjs/prisma/migrations/20260817140000_lyric_storyboards/migration.sql","apps/api-nestjs/src/queue/lyric-scenes.processor.ts","apps/web/src/app/api/[...path]/route.ts","apps/web/src/components/material-factory/LyricsStudio.tsx","apps/web/src/lib/public-asset-url.ts","deploy/vm/sidecar-bailian-requirements.txt","deploy/vm/sidecar-ocr-requirements.txt","services/model-sidecar/dashscope_provider.py"],"removed":[],"modified":["apps/api-fastify/prisma/migrations/20260823182000_add_outcome_attribution/migration.sql","apps/api-fastify/prisma/schema.prisma","apps/api-fastify/src/modules/material-factory/material-factory.service.ts","apps/api-fastify/src/plugins/queue.ts","apps/api-fastify/src/routes/material-factory.ts","apps/api-fastify/src/types.ts","apps/api-nestjs/prisma/migrations/20260823182000_add_outcome_attribution/migration.sql","apps/api-nestjs/prisma/schema.prisma","apps/api-nestjs/src/material-factory/material-factory.controller.ts","apps/api-nestjs/src/material-factory/material-factory.module.ts","apps/api-nestjs/src/material-factory/material-factory.service.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/web/next.config.ts","apps/web/src/components/material-factory/BrandHub.tsx","apps/web/src/components/material-factory/FactoryShell.tsx","apps/web/src/components/material-factory/LandingGate.tsx","apps/web/src/components/material-factory/MasterCanvas.tsx","apps/web/src/components/material-factory/StoryboardStudio.tsx","apps/web/src/components/material-factory/VideoStudio.tsx","apps/web/src/components/material-factory/bootstrap.ts","apps/web/src/components/material-factory/queries.ts","apps/web/src/hooks/useRealtime.ts","apps/web/src/lib/api.ts","apps/web/src/lib/types.ts","apps/web/src/store/useFactoryStore.ts","deploy/vm/.env.example","deploy/vm/Caddyfile","deploy/vm/Dockerfile","deploy/vm/docker-compose.yml","deploy/vm/sidecar.Dockerfile","packages/contracts/src/material-ocr-gate.test.ts","packages/contracts/src/material.test.ts","packages/contracts/src/material.ts","packages/contracts/tsconfig.json","reports/adversarial-acceptance-audit.latest.md","reports/contract-consumers.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/storyboard-director-guard.latest.json","reports/ui-acceptance.desktop.png","reports/ui-acceptance.latest.json","reports/ui-acceptance.mobile.png","reports/ui-acceptance.production.png","reports/validation-source.latest.json","scripts/check-inference-acceptance.mjs","scripts/check-production-acceptance.mjs","scripts/check-ui-acceptance.mjs","scripts/download-material-models.mjs","scripts/lib/source-fingerprint.mjs"]},{"id":"dc10d6356138564bf70fcfa6370ba66d99f0b0d7","message":"feat(material): 完成正式生产与导演交付链路\n\nCo-authored-by: Qwen-Coder \u003cqwen-coder@alibabacloud.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/dc10d6356138564bf70fcfa6370ba66d99f0b0d7","author":{"name":"huangliujian","email":"hlj@g-hi.com","username":"huangliujian"},"committer":{"name":"huangliujian","email":"hlj@g-hi.com","username":"huangliujian"},"verification":null,"timestamp":"2026-08-27T14:12:06+08:00","added":[".github/workflows/governance.yml","apps/api-fastify/prisma/migrations/20260823170000_formal_material_production/migration.sql","apps/api-fastify/prisma/migrations/20260823174500_add_provider_callback_receipts/migration.sql","apps/api-fastify/prisma/migrations/20260823182000_add_outcome_attribution/migration.sql","apps/api-fastify/prisma/migrations/20260823184500_normalize_model_connections/migration.sql","apps/api-fastify/prisma/migrations/20260823190000_persist_storyboards/migration.sql","apps/api-fastify/prisma/migrations/20260823200000_add_outbox_claim_leases/migration.sql","apps/api-fastify/prisma/migrations/20260823210000_add_model_resource_policies/migration.sql","apps/api-fastify/prisma/migrations/20260823211000_add_job_intent_queue_namespace/migration.sql","apps/api-fastify/prisma/migrations/20260823212000_add_storyboard_version_snapshots/migration.sql","apps/api-fastify/prisma/migrations/20260823220000_script_scenario_modes/migration.sql","apps/api-fastify/prisma/migrations/20260823230000_storyboard_video/migration.sql","apps/api-fastify/prisma/migrations/20260825090000_add_render_job_edit_sources/migration.sql","apps/api-fastify/prisma/migrations/20260825103000_creative_support_skills/migration.sql","apps/api-fastify/prisma/migrations/20260825130000_director_spec_qc/migration.sql","apps/api-fastify/prisma/migrations/20260825134500_storyboard_delivery_variants/migration.sql","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/src/modules/material-production/object-storage.service.ts","apps/api-fastify/src/modules/material-production/runtime-trust.ts","apps/api-fastify/src/routes/material-production.ts","apps/api-fastify/test/material-production.integration.test.ts","apps/api-fastify/test/material-review.integration.test.ts","apps/api-fastify/test/material-runtime-trust.test.ts","apps/api-fastify/test/model-connector.client.test.ts","apps/api-fastify/test/object-storage.integration.test.ts","apps/api-fastify/test/provider-callback.integration.test.ts","apps/api-nestjs/prisma/migrations/20260823170000_formal_material_production/migration.sql","apps/api-nestjs/prisma/migrations/20260823174500_add_provider_callback_receipts/migration.sql","apps/api-nestjs/prisma/migrations/20260823182000_add_outcome_attribution/migration.sql","apps/api-nestjs/prisma/migrations/20260823184500_normalize_model_connections/migration.sql","apps/api-nestjs/prisma/migrations/20260823190000_persist_storyboards/migration.sql","apps/api-nestjs/prisma/migrations/20260823200000_add_outbox_claim_leases/migration.sql","apps/api-nestjs/prisma/migrations/20260823210000_add_model_resource_policies/migration.sql","apps/api-nestjs/prisma/migrations/20260823211000_add_job_intent_queue_namespace/migration.sql","apps/api-nestjs/prisma/migrations/20260823212000_add_storyboard_version_snapshots/migration.sql","apps/api-nestjs/prisma/migrations/20260823220000_script_scenario_modes/migration.sql","apps/api-nestjs/prisma/migrations/20260823230000_storyboard_video/migration.sql","apps/api-nestjs/prisma/migrations/20260825090000_add_render_job_edit_sources/migration.sql","apps/api-nestjs/prisma/migrations/20260825103000_creative_support_skills/migration.sql","apps/api-nestjs/prisma/migrations/20260825130000_director_spec_qc/migration.sql","apps/api-nestjs/prisma/migrations/20260825134500_storyboard_delivery_variants/migration.sql","apps/api-nestjs/src/common/material-runtime.guard.ts","apps/api-nestjs/src/material-factory/model-connector.client.ts","apps/api-nestjs/src/material-production/job-intent-dispatcher.service.ts","apps/api-nestjs/src/material-production/material-production-worker.module.ts","apps/api-nestjs/src/material-production/material-production.controller.ts","apps/api-nestjs/src/material-production/material-production.module.ts","apps/api-nestjs/src/material-production/material-production.service.ts","apps/api-nestjs/src/material-production/object-storage.service.ts","apps/api-nestjs/src/material-production/render-worker.service.ts","apps/api-nestjs/src/production-worker.ts","apps/api-nestjs/test/material-production-modes.integration.test.ts","apps/api-nestjs/test/material-production-worker.integration.test.ts","apps/api-nestjs/test/material-production.integration.test.ts","apps/api-nestjs/test/material-review.integration.test.ts","apps/api-nestjs/test/material-runtime-guard.test.ts","apps/api-nestjs/test/model-connector.client.test.ts","apps/api-nestjs/test/object-storage.integration.test.ts","apps/api-nestjs/test/outbox-dispatcher.integration.test.ts","apps/api-nestjs/test/provider-callback.integration.test.ts","apps/web/public/material-factory/human-review-approved-stamp.png","apps/web/src/app/api/[...path]/route.ts","apps/web/src/components/material-factory/BlockedResolutionPanel.tsx","apps/web/src/components/material-factory/CreativeSupportSkills.tsx","apps/web/src/components/material-factory/DeliveryCenter.tsx","apps/web/src/components/material-factory/DirectorReviewWorkbench.tsx","apps/web/src/components/material-factory/ModelConnectionsStudio.tsx","apps/web/src/components/material-factory/ModelOperationsDashboard.tsx","apps/web/src/components/material-factory/PipelineFlow.tsx","apps/web/src/components/material-factory/ProductionDetail.tsx","apps/web/src/components/material-factory/QualityEvidencePanel.tsx","apps/web/src/components/material-factory/ReviewCenter.tsx","apps/web/src/components/material-factory/StoryboardStudio.tsx","apps/web/src/components/material-factory/TaskCenter.tsx","apps/web/src/components/material-factory/VersionCompare.tsx","apps/web/src/components/material-factory/VideoStudio.tsx","apps/web/src/components/material-factory/storyboard-director.ts","deploy/vm/sidecar-ocr-requirements.txt","design-qa.md","docs/domain/material-production-blueprint.md","docs/domain/module-boundary.md","docs/domain/owner-matrix.md","packages/contracts/src/creative-support.test.ts","packages/contracts/src/creative-support.ts","packages/contracts/src/director-spec.test.ts","packages/contracts/src/director-spec.ts","packages/contracts/src/production.test.ts","packages/contracts/src/production.ts","packages/contracts/src/script-scenario.test.ts","packages/contracts/src/script-sidecar.test.ts","packages/contracts/src/script-to-storyboard.test.ts","packages/contracts/src/script-to-storyboard.ts","packages/contracts/src/storyboard-video.test.ts","packages/contracts/src/storyboard.test.ts","packages/contracts/src/storyboard.ts","scripts/check-material-review-concurrency-guard.mjs","scripts/check-module-boundary.mjs","scripts/check-production-acceptance.mjs","scripts/check-production-security.mjs","scripts/check-storyboard-director-guard.mjs","scripts/lib/source-fingerprint.mjs","services/model-sidecar/test_mask_composite.py"],"removed":[],"modified":[".claude/launch.json",".github/pull_request_template.md",".gitignore","CLAUDE.md","README.md","apps/api-fastify/.env.example","apps/api-fastify/package.json","apps/api-fastify/prisma/schema.prisma","apps/api-fastify/src/app.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/shooting-script.service.ts","apps/api-fastify/src/plugins/outbox.ts","apps/api-fastify/src/routes/material-factory.ts","apps/api-fastify/test/http.acceptance.test.ts","apps/api-fastify/test/material-inference.acceptance.test.ts","apps/api-fastify/test/material-script.acceptance.test.ts","apps/api-nestjs/.env.example","apps/api-nestjs/docker-compose.yml","apps/api-nestjs/package.json","apps/api-nestjs/prisma/schema.prisma","apps/api-nestjs/src/app.module.ts","apps/api-nestjs/src/create-app.ts","apps/api-nestjs/src/events/event-bus.service.ts","apps/api-nestjs/src/events/outbox-dispatcher.service.ts","apps/api-nestjs/src/material-factory/material-factory.controller.ts","apps/api-nestjs/src/material-factory/material-factory.module.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/shooting-script.service.ts","apps/api-nestjs/test/http.acceptance.test.ts","apps/api-nestjs/test/material-inference.acceptance.test.ts","apps/api-nestjs/test/material-script.acceptance.test.ts","apps/web/eslint.config.mjs","apps/web/next.config.ts","apps/web/package.json","apps/web/src/app/globals.css","apps/web/src/app/layout.tsx","apps/web/src/components/EventFeed.tsx","apps/web/src/components/RealtimeBar.tsx","apps/web/src/components/material-factory/BrandHub.tsx","apps/web/src/components/material-factory/CreateStudio.tsx","apps/web/src/components/material-factory/DemoExportModal.tsx","apps/web/src/components/material-factory/EditStudio.tsx","apps/web/src/components/material-factory/ExportModal.tsx","apps/web/src/components/material-factory/FactoryShell.tsx","apps/web/src/components/material-factory/InpaintStudio.tsx","apps/web/src/components/material-factory/InstanceGallery.tsx","apps/web/src/components/material-factory/LandingGate.tsx","apps/web/src/components/material-factory/MasterCanvas.tsx","apps/web/src/components/material-factory/RoleConfirmPanel.tsx","apps/web/src/components/material-factory/ScriptStudio.tsx","apps/web/src/components/material-factory/ShotBoard.tsx","apps/web/src/components/material-factory/StillVersionBar.tsx","apps/web/src/components/material-factory/TemplateStudio.tsx","apps/web/src/components/material-factory/brand.ts","apps/web/src/components/material-factory/constants.ts","apps/web/src/components/material-factory/procedural.ts","apps/web/src/components/material-factory/queries.ts","apps/web/src/components/material-factory/ui.tsx","apps/web/src/hooks/useRealtime.ts","apps/web/src/lib/api.ts","apps/web/src/lib/public-asset-url.ts","apps/web/src/lib/types.ts","apps/web/src/store/useFactoryStore.ts","apps/web/tsconfig.json","deploy/vm/.env.example","deploy/vm/deploy.sh","deploy/vm/docker-compose.yml","deploy/vm/sidecar-bailian-requirements.txt","deploy/vm/sidecar.Dockerfile","docs/README.md","docs/deploy-vm.md","docs/product/controlled-ai-material-factory.md","package.json","packages/contracts/src/index.ts","packages/contracts/src/material-brand.test.ts","packages/contracts/src/material.test.ts","packages/contracts/src/material.ts","packages/contracts/src/realtime.ts","packages/contracts/src/script.ts","pnpm-lock.yaml","scripts/check-inference-acceptance.mjs","scripts/check-naming.mjs","scripts/check-runtime-acceptance.mjs","scripts/check-script-acceptance.mjs","scripts/check-ui-acceptance.mjs","scripts/download-material-models.mjs","scripts/governance-report.mjs","services/model-sidecar/README.md","services/model-sidecar/main.py"]},{"id":"5fbcad0bceea9e81914ae6b7e8bfb05265845598","message":"merge(main): 合并拍摄脚本与云端渲染能力\n\nCo-authored-by: Qwen-Coder \u003cqwen-coder@alibabacloud.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/5fbcad0bceea9e81914ae6b7e8bfb05265845598","author":{"name":"huangliujian","email":"hlj@g-hi.com","username":"huangliujian"},"committer":{"name":"huangliujian","email":"hlj@g-hi.com","username":"huangliujian"},"verification":null,"timestamp":"2026-08-18T16:58:46+08:00","added":[".gitattributes","apps/api-fastify/prisma/migrations/20260818042934_shooting_script_domain/migration.sql","apps/api-fastify/prisma/migrations/20260818053524_shot_still_versions/migration.sql","apps/api-fastify/src/modules/material-factory/shooting-script.service.ts","apps/api-fastify/test/material-script.acceptance.test.ts","apps/api-nestjs/prisma/migrations/20260818042934_shooting_script_domain/migration.sql","apps/api-nestjs/prisma/migrations/20260818053524_shot_still_versions/migration.sql","apps/api-nestjs/src/material-factory/shooting-script.controller.ts","apps/api-nestjs/src/material-factory/shooting-script.service.ts","apps/api-nestjs/test/material-script.acceptance.test.ts","apps/web/src/components/material-factory/RoleConfirmPanel.tsx","apps/web/src/components/material-factory/ScriptStudio.tsx","apps/web/src/components/material-factory/ShotBoard.tsx","apps/web/src/components/material-factory/StillVersionBar.tsx","models/material-factory/manifest.json","models/material-factory/paddleocr/PP-LCNet_x1_0_doc_ori_infer/.msc","models/material-factory/paddleocr/PP-LCNet_x1_0_doc_ori_infer/.mv","models/material-factory/paddleocr/PP-LCNet_x1_0_doc_ori_infer/README.md","models/material-factory/paddleocr/PP-LCNet_x1_0_doc_ori_infer/config.json","models/material-factory/paddleocr/PP-LCNet_x1_0_doc_ori_infer/inference.json","models/material-factory/paddleocr/PP-LCNet_x1_0_doc_ori_infer/inference.pdiparams","models/material-factory/paddleocr/PP-LCNet_x1_0_doc_ori_infer/inference.yml","models/material-factory/paddleocr/PP-LCNet_x1_0_textline_ori_infer/img_textline180_demo_res.jpg","models/material-factory/paddleocr/PP-LCNet_x1_0_textline_ori_infer/img_textline180_demo_res.json","models/material-factory/paddleocr/PP-LCNet_x1_0_textline_ori_infer/inference.json","models/material-factory/paddleocr/PP-LCNet_x1_0_textline_ori_infer/inference.pdiparams","models/material-factory/paddleocr/PP-LCNet_x1_0_textline_ori_infer/inference.yml","models/material-factory/paddleocr/PP-OCRv6_medium_det_infer/inference.json","models/material-factory/paddleocr/PP-OCRv6_medium_det_infer/inference.pdiparams","models/material-factory/paddleocr/PP-OCRv6_medium_det_infer/inference.yml","models/material-factory/paddleocr/PP-OCRv6_medium_rec_infer/inference.json","models/material-factory/paddleocr/PP-OCRv6_medium_rec_infer/inference.pdiparams","models/material-factory/paddleocr/PP-OCRv6_medium_rec_infer/inference.yml","models/material-factory/paddleocr/UVDoc_infer/inference.json","models/material-factory/paddleocr/UVDoc_infer/inference.pdiparams","models/material-factory/paddleocr/UVDoc_infer/inference.yml","models/material-factory/paddleocr/archives/PP-LCNet_x1_0_doc_ori_infer.tar","models/material-factory/paddleocr/archives/PP-LCNet_x1_0_textline_ori_infer.tar","models/material-factory/paddleocr/archives/PP-OCRv6_medium_det_infer.tar","models/material-factory/paddleocr/archives/PP-OCRv6_medium_rec_infer.tar","models/material-factory/paddleocr/archives/UVDoc_infer.tar","models/material-factory/qwen-image-2512/.gitattributes","models/material-factory/qwen-image-2512/README.md","models/material-factory/qwen-image-2512/model_index.json","models/material-factory/qwen-image-2512/scheduler/scheduler_config.json","models/material-factory/qwen-image-2512/text_encoder/config.json","models/material-factory/qwen-image-2512/text_encoder/generation_config.json","models/material-factory/qwen-image-2512/text_encoder/model-00001-of-00004.safetensors","models/material-factory/qwen-image-2512/text_encoder/model-00002-of-00004.safetensors","models/material-factory/qwen-image-2512/text_encoder/model-00003-of-00004.safetensors","models/material-factory/qwen-image-2512/text_encoder/model-00004-of-00004.safetensors","models/material-factory/qwen-image-2512/text_encoder/model.safetensors.index.json","models/material-factory/qwen-image-2512/tokenizer/added_tokens.json","models/material-factory/qwen-image-2512/tokenizer/chat_template.jinja","models/material-factory/qwen-image-2512/tokenizer/merges.txt","models/material-factory/qwen-image-2512/tokenizer/special_tokens_map.json","models/material-factory/qwen-image-2512/tokenizer/tokenizer_config.json","models/material-factory/qwen-image-2512/tokenizer/vocab.json","models/material-factory/qwen-image-2512/transformer/config.json","models/material-factory/qwen-image-2512/transformer/diffusion_pytorch_model-00001-of-00009.safetensors","models/material-factory/qwen-image-2512/transformer/diffusion_pytorch_model-00002-of-00009.safetensors","models/material-factory/qwen-image-2512/transformer/diffusion_pytorch_model-00003-of-00009.safetensors","models/material-factory/qwen-image-2512/transformer/diffusion_pytorch_model-00004-of-00009.safetensors","models/material-factory/qwen-image-2512/transformer/diffusion_pytorch_model-00005-of-00009.safetensors","models/material-factory/qwen-image-2512/transformer/diffusion_pytorch_model-00006-of-00009.safetensors","models/material-factory/qwen-image-2512/transformer/diffusion_pytorch_model-00007-of-00009.safetensors","models/material-factory/qwen-image-2512/transformer/diffusion_pytorch_model-00008-of-00009.safetensors","models/material-factory/qwen-image-2512/transformer/diffusion_pytorch_model-00009-of-00009.safetensors","models/material-factory/qwen-image-2512/transformer/diffusion_pytorch_model.safetensors.index.json","models/material-factory/qwen-image-2512/vae/config.json","models/material-factory/qwen-image-2512/vae/diffusion_pytorch_model.safetensors","models/material-factory/qwen-image-edit-2511/.gitattributes","models/material-factory/qwen-image-edit-2511/README.md","models/material-factory/qwen-image-edit-2511/model_index.json","models/material-factory/qwen-image-edit-2511/processor/added_tokens.json","models/material-factory/qwen-image-edit-2511/processor/chat_template.jinja","models/material-factory/qwen-image-edit-2511/processor/merges.txt","models/material-factory/qwen-image-edit-2511/processor/preprocessor_config.json","models/material-factory/qwen-image-edit-2511/processor/special_tokens_map.json","models/material-factory/qwen-image-edit-2511/processor/tokenizer.json","models/material-factory/qwen-image-edit-2511/processor/tokenizer_config.json","models/material-factory/qwen-image-edit-2511/processor/video_preprocessor_config.json","models/material-factory/qwen-image-edit-2511/processor/vocab.json","models/material-factory/qwen-image-edit-2511/scheduler/scheduler_config.json","models/material-factory/qwen-image-edit-2511/text_encoder/config.json","models/material-factory/qwen-image-edit-2511/text_encoder/generation_config.json","models/material-factory/qwen-image-edit-2511/text_encoder/model-00001-of-00004.safetensors","models/material-factory/qwen-image-edit-2511/text_encoder/model-00002-of-00004.safetensors","models/material-factory/qwen-image-edit-2511/text_encoder/model-00003-of-00004.safetensors","models/material-factory/qwen-image-edit-2511/text_encoder/model-00004-of-00004.safetensors","models/material-factory/qwen-image-edit-2511/text_encoder/model.safetensors.index.json","models/material-factory/qwen-image-edit-2511/tokenizer/added_tokens.json","models/material-factory/qwen-image-edit-2511/tokenizer/chat_template.jinja","models/material-factory/qwen-image-edit-2511/tokenizer/merges.txt","models/material-factory/qwen-image-edit-2511/tokenizer/special_tokens_map.json","models/material-factory/qwen-image-edit-2511/tokenizer/tokenizer_config.json","models/material-factory/qwen-image-edit-2511/tokenizer/vocab.json","models/material-factory/qwen-image-edit-2511/transformer/config.json","models/material-factory/qwen-image-edit-2511/transformer/diffusion_pytorch_model-00001-of-00005.safetensors","models/material-factory/qwen-image-edit-2511/transformer/diffusion_pytorch_model-00002-of-00005.safetensors","models/material-factory/qwen-image-edit-2511/transformer/diffusion_pytorch_model-00003-of-00005.safetensors","models/material-factory/qwen-image-edit-2511/transformer/diffusion_pytorch_model-00004-of-00005.safetensors","models/material-factory/qwen-image-edit-2511/transformer/diffusion_pytorch_model-00005-of-00005.safetensors","models/material-factory/qwen-image-edit-2511/transformer/diffusion_pytorch_model.safetensors.index.json","models/material-factory/qwen-image-edit-2511/vae/config.json","models/material-factory/qwen-image-edit-2511/vae/diffusion_pytorch_model.safetensors","models/material-factory/z-image-turbo/.gitattributes","models/material-factory/z-image-turbo/README.md","models/material-factory/z-image-turbo/assets/DMDR.webp","models/material-factory/z-image-turbo/assets/Z-Image-Gallery.pdf","models/material-factory/z-image-turbo/assets/architecture.webp","models/material-factory/z-image-turbo/assets/decoupled-dmd.webp","models/material-factory/z-image-turbo/assets/leaderboard.png","models/material-factory/z-image-turbo/assets/leaderboard.webp","models/material-factory/z-image-turbo/assets/reasoning.png","models/material-factory/z-image-turbo/assets/showcase.jpg","models/material-factory/z-image-turbo/assets/showcase_editing.png","models/material-factory/z-image-turbo/assets/showcase_realistic.png","models/material-factory/z-image-turbo/assets/showcase_rendering.png","models/material-factory/z-image-turbo/model_index.json","models/material-factory/z-image-turbo/scheduler/scheduler_config.json","models/material-factory/z-image-turbo/text_encoder/config.json","models/material-factory/z-image-turbo/text_encoder/generation_config.json","models/material-factory/z-image-turbo/text_encoder/model-00001-of-00003.safetensors","models/material-factory/z-image-turbo/text_encoder/model-00002-of-00003.safetensors","models/material-factory/z-image-turbo/text_encoder/model-00003-of-00003.safetensors","models/material-factory/z-image-turbo/text_encoder/model.safetensors.index.json","models/material-factory/z-image-turbo/tokenizer/merges.txt","models/material-factory/z-image-turbo/tokenizer/tokenizer.json","models/material-factory/z-image-turbo/tokenizer/tokenizer_config.json","models/material-factory/z-image-turbo/tokenizer/vocab.json","models/material-factory/z-image-turbo/transformer/config.json","models/material-factory/z-image-turbo/transformer/diffusion_pytorch_model-00001-of-00003.safetensors","models/material-factory/z-image-turbo/transformer/diffusion_pytorch_model-00002-of-00003.safetensors","models/material-factory/z-image-turbo/transformer/diffusion_pytorch_model-00003-of-00003.safetensors","models/material-factory/z-image-turbo/transformer/diffusion_pytorch_model.safetensors.index.json","models/material-factory/z-image-turbo/vae/config.json","models/material-factory/z-image-turbo/vae/diffusion_pytorch_model.safetensors","packages/contracts/src/script-machine.test.ts","packages/contracts/src/script-role-gate.test.ts","packages/contracts/src/script-stale.test.ts","packages/contracts/src/script.ts","reports/script-acceptance.latest.json","scripts/check-script-acceptance.mjs"],"removed":[],"modified":["CLAUDE.md","apps/api-fastify/prisma/migrations/20260817140000_lyric_storyboards/migration.sql","apps/api-fastify/prisma/migrations/migration_lock.toml","apps/api-fastify/prisma/schema.prisma","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/routes/material-factory.ts","apps/api-fastify/test/material-inference.acceptance.test.ts","apps/api-nestjs/prisma/migrations/20260817140000_lyric_storyboards/migration.sql","apps/api-nestjs/prisma/migrations/migration_lock.toml","apps/api-nestjs/prisma/schema.prisma","apps/api-nestjs/src/material-factory/material-factory.module.ts","apps/api-nestjs/src/material-factory/material-factory.service.ts","apps/api-nestjs/src/material-factory/material-sidecar.client.ts","apps/api-nestjs/test/material-inference.acceptance.test.ts","apps/web/src/components/material-factory/BrandHub.tsx","apps/web/src/components/material-factory/EditStudio.tsx","apps/web/src/components/material-factory/FactoryShell.tsx","apps/web/src/components/material-factory/bootstrap.ts","apps/web/src/components/material-factory/brand.ts","apps/web/src/components/material-factory/constants.ts","apps/web/src/components/material-factory/queries.ts","apps/web/src/lib/api.ts","apps/web/src/lib/types.ts","apps/web/src/store/useFactoryStore.ts","package.json","packages/contracts/src/index.ts","packages/contracts/src/material.test.ts","packages/contracts/src/material.ts","reports/baseline.json","reports/contract-consumers.latest.json","reports/governance-docs.latest.json","reports/governance.latest.json","reports/inference-acceptance.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.desktop.png","reports/ui-acceptance.latest.json","reports/ui-acceptance.mobile.png","reports/validation-source.latest.json","scripts/check-migrations.mjs","scripts/governance-report.mjs","services/model-sidecar/dashscope_provider.py","services/model-sidecar/main.py","services/model-sidecar/qwen.py"]},{"id":"549ea31448ec1e62e8f10039ed3f8c7d384e07f8","message":"feat(material-factory): 接入阿里云百炼真实生成链路\n\nCo-authored-by: Qwen-Coder \u003cqwen-coder@alibabacloud.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/549ea31448ec1e62e8f10039ed3f8c7d384e07f8","author":{"name":"huangliujian","email":"hlj@g-hi.com","username":"huangliujian"},"committer":{"name":"huangliujian","email":"hlj@g-hi.com","username":"huangliujian"},"verification":null,"timestamp":"2026-08-17T17:34:04+08:00","added":["apps/api-fastify/prisma/migrations/20260814120000_cloud_generate_kind/migration.sql","apps/api-fastify/prisma/migrations/20260817140000_lyric_storyboards/migration.sql","apps/api-nestjs/prisma/migrations/20260814120000_cloud_generate_kind/migration.sql","apps/api-nestjs/prisma/migrations/20260817140000_lyric_storyboards/migration.sql","apps/api-nestjs/src/queue/lyric-scenes.processor.ts","apps/web/src/lib/public-asset-url.ts","deploy/vm/sidecar-bailian-requirements.txt","services/model-sidecar/dashscope_provider.py"],"removed":[],"modified":["CLAUDE.md","apps/api-fastify/prisma/schema.prisma","apps/api-fastify/src/modules/material-factory/material-factory.service.ts","apps/api-fastify/src/plugins/queue.ts","apps/api-fastify/src/routes/material-factory.ts","apps/api-fastify/src/types.ts","apps/api-fastify/test/material-inference.acceptance.test.ts","apps/api-nestjs/prisma/schema.prisma","apps/api-nestjs/src/material-factory/material-factory.controller.ts","apps/api-nestjs/src/material-factory/material-factory.module.ts","apps/api-nestjs/src/material-factory/material-factory.service.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/test/material-inference.acceptance.test.ts","apps/web/next.config.ts","apps/web/src/components/material-factory/BrandHub.tsx","apps/web/src/components/material-factory/CreateStudio.tsx","apps/web/src/components/material-factory/EditStudio.tsx","apps/web/src/components/material-factory/FactoryShell.tsx","apps/web/src/components/material-factory/InstanceGallery.tsx","apps/web/src/components/material-factory/LyricsStudio.tsx","apps/web/src/components/material-factory/bootstrap.ts","apps/web/src/components/material-factory/queries.ts","apps/web/src/hooks/useRealtime.ts","apps/web/src/lib/api.ts","apps/web/src/lib/types.ts","deploy/vm/.env.example","deploy/vm/Caddyfile","deploy/vm/Dockerfile","deploy/vm/docker-compose.yml","deploy/vm/sidecar.Dockerfile","packages/contracts/src/material-ocr-gate.test.ts","packages/contracts/src/material.test.ts","packages/contracts/src/material.ts","packages/contracts/tsconfig.json","services/model-sidecar/main.py"]}],"total_commits":0,"head_commit":{"id":"b3a5c0dc690884729878b7f4cce1adbad046be14","message":"merge: integrate all remaining branches\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/b3a5c0dc690884729878b7f4cce1adbad046be14","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-08-31T20:19:35-07:00","added":["apps/api-fastify/prisma/migrations/20260814120000_cloud_generate_kind/migration.sql","apps/api-fastify/prisma/migrations/20260817140000_lyric_storyboards/migration.sql","apps/api-nestjs/prisma/migrations/20260814120000_cloud_generate_kind/migration.sql","apps/api-nestjs/prisma/migrations/20260817140000_lyric_storyboards/migration.sql","apps/api-nestjs/src/queue/lyric-scenes.processor.ts","apps/web/src/app/api/[...path]/route.ts","apps/web/src/components/material-factory/LyricsStudio.tsx","apps/web/src/lib/public-asset-url.ts","deploy/vm/sidecar-bailian-requirements.txt","deploy/vm/sidecar-ocr-requirements.txt","services/model-sidecar/dashscope_provider.py"],"removed":[],"modified":["apps/api-fastify/prisma/migrations/20260823182000_add_outcome_attribution/migration.sql","apps/api-fastify/prisma/schema.prisma","apps/api-fastify/src/modules/material-factory/material-factory.service.ts","apps/api-fastify/src/plugins/queue.ts","apps/api-fastify/src/routes/material-factory.ts","apps/api-fastify/src/types.ts","apps/api-nestjs/prisma/migrations/20260823182000_add_outcome_attribution/migration.sql","apps/api-nestjs/prisma/schema.prisma","apps/api-nestjs/src/material-factory/material-factory.controller.ts","apps/api-nestjs/src/material-factory/material-factory.module.ts","apps/api-nestjs/src/material-factory/material-factory.service.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/web/next.config.ts","apps/web/src/components/material-factory/BrandHub.tsx","apps/web/src/components/material-factory/FactoryShell.tsx","apps/web/src/components/material-factory/LandingGate.tsx","apps/web/src/components/material-factory/MasterCanvas.tsx","apps/web/src/components/material-factory/StoryboardStudio.tsx","apps/web/src/components/material-factory/VideoStudio.tsx","apps/web/src/components/material-factory/bootstrap.ts","apps/web/src/components/material-factory/queries.ts","apps/web/src/hooks/useRealtime.ts","apps/web/src/lib/api.ts","apps/web/src/lib/types.ts","apps/web/src/store/useFactoryStore.ts","deploy/vm/.env.example","deploy/vm/Caddyfile","deploy/vm/Dockerfile","deploy/vm/docker-compose.yml","deploy/vm/sidecar.Dockerfile","packages/contracts/src/material-ocr-gate.test.ts","packages/contracts/src/material.test.ts","packages/contracts/src/material.ts","packages/contracts/tsconfig.json","reports/adversarial-acceptance-audit.latest.md","reports/contract-consumers.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/storyboard-director-guard.latest.json","reports/ui-acceptance.desktop.png","reports/ui-acceptance.latest.json","reports/ui-acceptance.mobile.png","reports/ui-acceptance.production.png","reports/validation-source.latest.json","scripts/check-inference-acceptance.mjs","scripts/check-production-acceptance.mjs","scripts/check-ui-acceptance.mjs","scripts/download-material-models.mjs","scripts/lib/source-fingerprint.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":47863,"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":5,"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-01T10:41:31+08:00","archived_at":"1970-01-01T08:00:00+08:00","permissions":{"admin":true,"push":true,"pull":true},"has_code":true,"has_issues":true,"internal_tracker":{"enable_time_tracker":true,"allow_only_contributors_to_track_time":true,"enable_issue_dependencies":true},"has_wiki":true,"has_pull_requests":true,"has_projects":true,"projects_mode":"all","has_releases":true,"has_packages":true,"has_actions":true,"ignore_whitespace_conflicts":false,"allow_merge_commits":true,"allow_rebase":true,"allow_rebase_explicit":true,"allow_squash_merge":true,"allow_fast_forward_only_merge":true,"allow_rebase_update":true,"allow_manual_merge":false,"autodetect_manual_merge":false,"default_delete_branch_after_merge":false,"default_merge_style":"merge","default_allow_maintainer_edit":true,"avatar_url":"","internal":false,"mirror_interval":"","object_format_name":"sha1","mirror_updated":"0001-01-01T00:00:00Z","topics":[],"licenses":[]},"pusher":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"sender":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"}}...
|
push
|
2
|
4
|
1788232800
|
1788232834
|
0
|
1788232799
|
1788232834
|
group: governance-${{ github.workflow }}-${{ githu group: governance-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: "true"
...
|
governance-governance.yml-refs/heads/main
|
1
|
Edit
Delete
|
|
23636
|
chore(dev): derive local DB credentials from deplo chore(dev): derive local DB credentials from deploy/vm/.env in launch.json...
|
57
|
5
|
governance.yml
|
11
|
5
|
0
|
refs/heads/main
|
a228915e1a104c81591ac55a929061b082e8d7e6
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"b3a5c0dc690884729878b7f4cce1adbad046be14","after":"a228915e1a104c81591ac55a929061b082e8d7e6","compare_url":"https://gitea.g-hi.com/luoanwu/image-generation/compare/b3a5c0dc690884729878b7f4cce1adbad046be14...a228915e1a104c81591ac55a929061b082e8d7e6","commits":[{"id":"a228915e1a104c81591ac55a929061b082e8d7e6","message":"chore(dev): derive local DB credentials from deploy/vm/.env in launch.json\n\nThe api-fastify launch config hard-coded app:app@127.0.0.1:55434, but that port\nis now served by the deploy/vm Compose stack whose password lives in\ndeploy/vm/.env, so the dev API crashed with P1000 at startup. Derive\nDATABASE_URL/REDIS_URL/MODEL_SIDECAR_URL from that file (fallbacks unchanged),\nrun the web dev server with an empty basePath like check:ui does, and lock the\nproxy target to 127.0.0.1.\n\nCo-Authored-By: Claude Fable 5.1 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/a228915e1a104c81591ac55a929061b082e8d7e6","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-09-04T08:32:53-07:00","added":[],"removed":[],"modified":[".claude/launch.json"]},{"id":"cee456d14fb8a0a9491a439c02ff8e1b43f92a0b","message":"feat(identity): consume enterprise IdP access tokens on formal material routes\n\n- Add @hi-atelier/enterprise-identity (jose): RS256 verification against a\n tenant-level issuer allowlist with fixed JWKS, audience/expiry/claim checks,\n material.* scope requirement, tenant derived from the signed tenant_id, and\n HUMAN actor id/permissions bound to sub/scope.\n- NestJS material-runtime guard and Fastify runtime-trust preHandler both run\n the shared-secret check and then the IdP verification; misconfiguration stays\n 503, forged identities return 401/403; acceptance bypass still needs the run id.\n- Config: MATERIAL_IDP_AUDIENCE + MATERIAL_IDP_TRUSTED_ISSUERS_JSON in\n deploy/vm/.env.example, docker-compose and turbo globalEnv.\n- Docs: ADR-0011, material-production blueprint, owner matrix, deploy runbook,\n CLAUDE.md G8 status; production-security and UI acceptance scripts updated.\n- Regenerated governance reports. Heavy acceptance reports still carry the\n pre-hljTest-merge source fingerprint (sha256:8d6f5dab...), so check:governance\n reports heavyGateDocDrift=6 until runtime/ui/inference/production/public-file\n acceptance are rerun on the merged tree.\n\nCo-Authored-By: Claude Fable 5.1 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/cee456d14fb8a0a9491a439c02ff8e1b43f92a0b","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-09-04T08:32:53-07:00","added":["docs/adr/0011-consume-enterprise-idp-access-tokens.md","packages/enterprise-identity/package.json","packages/enterprise-identity/src/index.test.ts","packages/enterprise-identity/src/index.ts","packages/enterprise-identity/tsconfig.json"],"removed":[],"modified":["CLAUDE.md","apps/api-fastify/package.json","apps/api-fastify/src/modules/material-production/runtime-trust.ts","apps/api-fastify/src/modules/tenant.ts","apps/api-fastify/src/routes/material-production.ts","apps/api-fastify/test/material-runtime-trust.test.ts","apps/api-nestjs/package.json","apps/api-nestjs/src/common/material-runtime.guard.ts","apps/api-nestjs/src/common/tenant.decorator.ts","apps/api-nestjs/test/material-runtime-guard.test.ts","deploy/vm/.env.example","deploy/vm/docker-compose.yml","docs/adr/README.md","docs/deploy-vm.md","docs/domain/material-production-blueprint.md","docs/domain/owner-matrix.md","packages/contracts/src/storyboard.ts","pnpm-lock.yaml","reports/adversarial-acceptance-audit.latest.md","reports/contract-consumers.latest.json","reports/full-transformation-completion-audit.latest.md","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/storyboard-director-guard.latest.json","reports/ui-acceptance.desktop.png","reports/ui-acceptance.latest.json","reports/ui-acceptance.mobile.png","reports/ui-acceptance.production.png","reports/validation-source.latest.json","scripts/check-production-security.mjs","scripts/check-ui-acceptance.mjs","turbo.json"]},{"id":"b8a9672a43a850e5c96ca3808cdc1a5b8446b098","message":"merge: origin/hljTest into main\n\nhljTest and main had each merged the same branches independently (criss-cross,\nmerge bases c16f03b + dc10d63), so git reported conflicts in FactoryShell.tsx and\n21 generated reports/* evidence files. Resolution: keep main's tree (main's later\nintegration b3a5c0d already carried everything on hljTest except one commit) and\napply hljTest's only new commit acf98e3: build @hi-atelier/public-file declarations\nin the deploy image and drop composite/incremental tsc output.\n\nNot taken from hljTest's merge resolution: hiding the 歌词 nav item, and deleting\noutput/hi-atelier-posters-4k, reports/login-redesign.*, .playwright-cli/* and\nreports/full-transformation-completion-audit.latest.md (still referenced by CLAUDE.md).\n\nCo-Authored-By: Claude Fable 5.1 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/b8a9672a43a850e5c96ca3808cdc1a5b8446b098","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-09-04T08:15:27-07:00","added":[],"removed":[],"modified":["deploy/vm/Dockerfile","packages/public-file/package.json","packages/public-file/tsconfig.json"]},{"id":"acf98e305c9119899658833425da4ec0e240eb81","message":"fix(deploy): build public file declarations in containers\n\nCo-authored-by: Qwen-Coder \u003cqwen-coder@alibabacloud.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/acf98e305c9119899658833425da4ec0e240eb81","author":{"name":"huangliujian","email":"hlj@g-hi.com","username":"huangliujian"},"committer":{"name":"huangliujian","email":"hlj@g-hi.com","username":"huangliujian"},"verification":null,"timestamp":"2026-09-01T12:37:46+08:00","added":[],"removed":[],"modified":["deploy/vm/Dockerfile","packages/public-file/package.json","packages/public-file/tsconfig.json"]},{"id":"4f9e26991be55cebd9581ee270d986def4c2eb17","message":"Merge remote-tracking branch 'origin/main' into hljTest\n\n# Conflicts:\n#\tapps/web/src/components/material-factory/FactoryShell.tsx\n#\tdeploy/vm/sidecar.Dockerfile\n#\tmodels/material-factory/manifest.json\n#\treports/adversarial-acceptance-audit.latest.md\n#\treports/baseline.json\n#\treports/contract-consumers.latest.json\n#\treports/governance-docs.latest.json\n#\treports/governance.latest.json\n#\treports/inference-acceptance.latest.json\n#\treports/material-models.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/runtime-acceptance.latest.json\n#\treports/runtime-governance.latest.json\n#\treports/schema-sync.latest.json\n#\treports/startup-acceptance.latest.json\n#\treports/storyboard-director-guard.latest.json\n#\treports/ui-acceptance.desktop.png\n#\treports/ui-acceptance.latest.json\n#\treports/ui-acceptance.mobile.png\n#\treports/ui-acceptance.production.png\n#\treports/validation-source.latest.json\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/4f9e26991be55cebd9581ee270d986def4c2eb17","author":{"name":"huangliujian","email":"hlj@g-hi.com","username":"huangliujian"},"committer":{"name":"huangliujian","email":"hlj@g-hi.com","username":"huangliujian"},"verification":null,"timestamp":"2026-09-01T11:13:05+08:00","added":["docs/product/creative-workflow-analysis.md","packages/public-file/README.md","packages/public-file/package.json","packages/public-file/src/index.test.ts","packages/public-file/src/index.ts","packages/public-file/src/infrastructure.integration.test.ts","packages/public-file/src/ref.test.ts","packages/public-file/src/ref.ts","packages/public-file/tsconfig.json","reports/adversarial-acceptance-audit.latest.md","reports/creative-workflow-audit/01-entry.png","reports/creative-workflow-audit/02-workspace-empty.png","reports/creative-workflow-audit/03-script-start.png","reports/creative-workflow-audit/README.md","reports/full-ux-audit-2026-08-28/01-entry-desktop.png","reports/full-ux-audit-2026-08-28/02-brand-empty-desktop.png","reports/full-ux-audit-2026-08-28/03-image-create-desktop.png","reports/full-ux-audit-2026-08-28/04-storyboard-desktop.png","reports/full-ux-audit-2026-08-28/05-production-tasks-desktop.png","reports/full-ux-audit-2026-08-28/06-production-tasks-mobile.png","reports/full-ux-audit-2026-08-28/07-image-create-mobile.png","reports/full-ux-audit-2026-08-28/08-script-mobile.png","reports/full-ux-audit-2026-08-28/README.md","reports/material-review-concurrency-guard.latest.json","reports/module-boundary.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/storyboard-director-guard.latest.json","reports/ui-acceptance.production.png","scripts/check-public-file-acceptance.mjs","scripts/check-public-file-integration.mjs"],"removed":[],"modified":["CLAUDE.md","apps/api-fastify/package.json","apps/api-fastify/src/modules/material-production/object-storage.service.ts","apps/api-fastify/test/object-storage.integration.test.ts","apps/api-nestjs/package.json","apps/api-nestjs/src/material-production/object-storage.service.ts","apps/api-nestjs/test/object-storage.integration.test.ts","apps/web/src/app/globals.css","apps/web/src/components/material-factory/BrandHub.tsx","apps/web/src/components/material-factory/DeliveryCenter.tsx","apps/web/src/components/material-factory/FactoryShell.tsx","apps/web/src/components/material-factory/PipelineFlow.tsx","apps/web/src/components/material-factory/ReviewCenter.tsx","apps/web/src/components/material-factory/ScriptStudio.tsx","apps/web/src/components/material-factory/TaskCenter.tsx","apps/web/src/components/material-factory/ui.tsx","apps/web/src/store/useFactoryStore.ts","deploy/vm/.env.example","deploy/vm/Caddyfile","deploy/vm/docker-compose.yml","deploy/vm/sidecar.Dockerfile","docs/domain/material-production-blueprint.md","docs/domain/owner-matrix.md","models/material-factory/manifest.json","models/material-factory/paddleocr/PP-LCNet_x1_0_doc_ori_infer/README.md","package.json","pnpm-lock.yaml","reports/baseline.json","reports/contract-consumers.latest.json","reports/governance-docs.latest.json","reports/governance.latest.json","reports/inference-acceptance.latest.json","reports/material-models.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/startup-acceptance.latest.json","reports/ui-acceptance.desktop.png","reports/ui-acceptance.latest.json","reports/ui-acceptance.mobile.png","reports/validation-source.latest.json","scripts/check-ui-acceptance.mjs","scripts/governance-report.mjs","services/model-sidecar/main.py","turbo.json"]}],"total_commits":0,"head_commit":{"id":"a228915e1a104c81591ac55a929061b082e8d7e6","message":"chore(dev): derive local DB credentials from deploy/vm/.env in launch.json\n\nThe api-fastify launch config hard-coded app:app@127.0.0.1:55434, but that port\nis now served by the deploy/vm Compose stack whose password lives in\ndeploy/vm/.env, so the dev API crashed with P1000 at startup. Derive\nDATABASE_URL/REDIS_URL/MODEL_SIDECAR_URL from that file (fallbacks unchanged),\nrun the web dev server with an empty basePath like check:ui does, and lock the\nproxy target to 127.0.0.1.\n\nCo-Authored-By: Claude Fable 5.1 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/a228915e1a104c81591ac55a929061b082e8d7e6","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-09-04T08:32:53-07:00","added":[],"removed":[],"modified":[".claude/launch.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":49341,"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":5,"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-01T12:38:11+08:00","archived_at":"1970-01-01T08:00:00+08:00","permissions":{"admin":true,"push":true,"pull":true},"has_code":true,"has_issues":true,"internal_tracker":{"enable_time_tracker":true,"allow_only_contributors_to_track_time":true,"enable_issue_dependencies":true},"has_wiki":true,"has_pull_requests":true,"has_projects":true,"projects_mode":"all","has_releases":true,"has_packages":true,"has_actions":true,"ignore_whitespace_conflicts":false,"allow_merge_commits":true,"allow_rebase":true,"allow_rebase_explicit":true,"allow_squash_merge":true,"allow_fast_forward_only_merge":true,"allow_rebase_update":true,"allow_manual_merge":false,"autodetect_manual_merge":false,"default_delete_branch_after_merge":false,"default_merge_style":"merge","default_allow_maintainer_edit":true,"avatar_url":"","internal":false,"mirror_interval":"","object_format_name":"sha1","mirror_updated":"0001-01-01T00:00:00Z","topics":[],"licenses":[]},"pusher":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"sender":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"}}...
|
push
|
2
|
4
|
1788535983
|
1788536927
|
0
|
1788535982
|
1788536927
|
group: governance-${{ github.workflow }}-${{ githu group: governance-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: "true"
...
|
governance-governance.yml-refs/heads/main
|
1
|
Edit
Delete
|
|
23637
|
chore(governance): 对抗性验收复审与门禁收紧;检查点收纳并行会话进行中工作
|
57
|
5
|
governance.yml
|
12
|
5
|
0
|
refs/heads/main
|
a08628dd493b9ddcb20d9e326758d64dc36a0056
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"a228915e1a104c81591ac55a929061b082e8d7e6","after":"a08628dd493b9ddcb20d9e326758d64dc36a0056","compare_url":"https://gitea.g-hi.com/luoanwu/image-generation/compare/a228915e1a104c81591ac55a929061b082e8d7e6...a08628dd493b9ddcb20d9e326758d64dc36a0056","commits":[{"id":"a08628dd493b9ddcb20d9e326758d64dc36a0056","message":"chore(governance): 对抗性验收复审与门禁收紧;检查点收纳并行会话进行中工作\n\n对抗审计(本会话):\n- script 验收报告绑定源码指纹并登记为源码绑定重型门禁(此前基线表 ✅ 从未被机器比对)\n- ownTests 棘轮地板 31→48;check:production 禁 skip 名单扩到 nestjs/fastify-production\n- 定位并复现脚本验收固定租户的并行 runner 污染,验证 run-scoped 租户修复(Fastify 套件 ×2 通过)\n- 真实库探针:非终态结果 fail-open、reconcile 判责根因错(并行会话已修,本会话复验,套件各 12/12)\n- 并行会话新增契约注释命中命名禁用词 terminal,改为 final\n- 记录进行中的 Compose 认证模式改动使 check:production-security 红,未放宽检查器\n- 对抗审计报告新增复审节,CLAUDE.md 复审节与基线表行同步\n\n检查点同时收纳并行会话进行中的工作:创作 Worker 模块隔离、视频进度契约、队列隔离策略、\n模型凭证存储(packages/model-credentials、sidecar model_credentials.py)、脚本验收 run-scoped 租户、\nCompose MATERIAL_AUTH_MODE 等。全仓 typecheck / lint 通过;pnpm check 因 productionSecurityViolations=1\n(Compose IdP 配置改为可选,待与检查器规则同步)未全绿。可用 git reset --soft HEAD~1 撤销本检查点。\n\nCo-Authored-By: Claude Fable 5.1 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/a08628dd493b9ddcb20d9e326758d64dc36a0056","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-09-04T21:34:23-07:00","added":["apps/api-fastify/test/creative-queue-isolation.integration.test.ts","apps/api-fastify/test/creative-video-progress.integration.test.ts","apps/api-fastify/test/model-credentials.integration.test.ts","apps/api-nestjs/src/creative-project/creative-worker.module.ts","apps/api-nestjs/test/creative-queue-isolation.integration.test.ts","apps/api-nestjs/test/creative-video-progress.integration.test.ts","apps/api-nestjs/test/model-credentials.integration.test.ts","docs/model-credentials.md","packages/contracts/src/creative-queue-policy.test.ts","packages/contracts/src/creative-queue-policy.ts","packages/contracts/src/creative-video-progress.test.ts","packages/contracts/src/creative-video-progress.ts","packages/model-credentials/package.json","packages/model-credentials/src/index.test.ts","packages/model-credentials/src/index.ts","packages/model-credentials/tsconfig.json","reports/acceptance-convergence-2026-09-05.md","reports/creative-breakpoint-fix-2026-09-05.md","reports/model-credential-error.desktop.png","reports/model-credential-error.mobile.png","services/model-sidecar/model_credentials.py","services/model-sidecar/test_llm_preflight.py","services/model-sidecar/test_managed_credentials.py"],"removed":[],"modified":[".dockerignore","CLAUDE.md","apps/api-fastify/package.json","apps/api-fastify/src/modules/creative-project/creative-project.service.ts","apps/api-fastify/src/modules/creative-project/creative-worker.runtime.ts","apps/api-fastify/src/modules/material-factory/material-factory.service.ts","apps/api-fastify/src/modules/material-factory/model-catalog.service.ts","apps/api-fastify/src/modules/material-factory/model-connector.client.ts","apps/api-fastify/src/modules/material-production/runtime-trust.ts","apps/api-fastify/test/creative-project.integration.test.ts","apps/api-fastify/test/material-runtime-trust.test.ts","apps/api-fastify/test/material-script.acceptance.test.ts","apps/api-nestjs/package.json","apps/api-nestjs/src/common/material-runtime.guard.ts","apps/api-nestjs/src/creative-project/creative-project.service.ts","apps/api-nestjs/src/creative-project/creative-worker.runtime.ts","apps/api-nestjs/src/creative-worker.ts","apps/api-nestjs/src/material-factory/material-factory.service.ts","apps/api-nestjs/src/material-factory/model-catalog.service.ts","apps/api-nestjs/src/material-factory/model-connector.client.ts","apps/api-nestjs/test/creative-project.integration.test.ts","apps/api-nestjs/test/material-runtime-guard.test.ts","apps/api-nestjs/test/material-script.acceptance.test.ts","apps/web/src/app/api/[...path]/route.ts","apps/web/src/app/auth/[action]/route.ts","apps/web/src/components/material-factory/FactoryShell.tsx","apps/web/src/components/material-factory/ModelConnectionsStudio.tsx","apps/web/src/lib/browser-identity.tsx","apps/web/src/lib/server/browser-identity.ts","deploy/vm/.env.example","deploy/vm/Dockerfile","deploy/vm/docker-compose.yml","deploy/vm/sidecar-bailian-requirements.txt","deploy/vm/sidecar-ocr-requirements.txt","docs/adr/0012-model-execution-routing-and-catalog.md","docs/adr/0016-durable-creative-projects.md","docs/adr/README.md","packages/contracts/src/browser-identity.ts","packages/contracts/src/creative-project.ts","packages/contracts/src/index.ts","packages/contracts/src/material.ts","packages/enterprise-identity/src/index.ts","pnpm-lock.yaml","reports/adversarial-acceptance-audit.latest.md","reports/baseline.json","reports/contract-consumers.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/storyboard-director-guard.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/validation-source.latest.json","scripts/check-production-acceptance.mjs","scripts/check-script-acceptance.mjs","scripts/check-ui-acceptance.mjs","scripts/governance-report.mjs","services/model-sidecar/main.py","services/model-sidecar/pyproject.toml","services/model-sidecar/uv.lock"]},{"id":"e01fdcc0959716731cbb8ab60e97910b7615771c","message":"feat(script-ux): 脚本屏先选内容类型再选应用场景\n\n- 左栏顺序改为 ① 内容类型(文本内容 / 歌词)→ ② 应用场景 → ③ 内容;来源类型决定可用场景\n- 与当前内容类型不兼容的场景卡禁用并标注只接受哪种来源(MV 只接受歌词、TVC / 招商等只接受文案),选场景不再反向改内容类型;切换内容类型时仍按 defaultScenarioForSource 回落\n- 选择器补 aria-pressed;既有 testid 不变(script-source-kind-*、scenario-*、script-source-text)\n- CLAUDE.md 真源地图脚本屏条目同步说明\n\nCo-Authored-By: Claude Fable 5.1 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/e01fdcc0959716731cbb8ab60e97910b7615771c","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-09-04T20:34:22-07:00","added":[],"removed":[],"modified":["CLAUDE.md","apps/web/src/components/material-factory/ScriptStudio.tsx"]},{"id":"83173c8e463ee7ae4bf370410b4646079fff04eb","message":"feat(ux): 更名嗨设首席,补齐不可用动作恢复提示与手机端参数折叠;检查点收纳并行会话工作\n\n本会话改动:\n- 产品中文名「嗨设工坊」→「嗨设首席」:UI(标题 / 着陆页 / 顶栏 / Brand Hub / 默认品牌故事)、探活与验收脚本、sidecar 描述、README 与 docs、4K 海报重渲染并刷新 manifest sha256;英文名 HI Atelier、hi-atelier 标识与历史报告不改\n- 共享 RecoveryHint + job-recovery.ts describeJobRecovery():生成 / 视频屏主按钮因模型不可用被禁用时给出人话原因、服务端原文与「改用已就绪模型 / 去模型中心」一键动作,BLOCKED / UNKNOWN / FAILED 结果同口径\n- describeApiError() 补 400 / 404 / 429 / 5xx / 网络不可达;手机端生成屏参数区折叠为一行摘要(桌面常显,验收 testid 不变);运营看板加载骨架 / 错误 / 空态 / 更新时间;Chip 与类型 / 模型 / 比例选择器 aria-pressed,FlameButton aria-busy;改字屏面向门店的说明去工程词\n- CLAUDE.md 真源地图登记恢复提示单源与更名说明;UX 审计记录增补 2026-09-04 复审;创作流程分析 P1「失败恢复进入主流程」状态更新\n\n同一工作树内并行会话的进行中工作一并纳入本检查点(多模型目录 C18 / C19、创作项目聚合与 worker、浏览器企业登录、公共文件验收扩展、ADR 0012–0015 等)。\n\n门禁证据:静态 pnpm check 除重型报告指纹过期外全绿,lint / typecheck 通过;本会话 2026-09-05 03:16–03:23 UTC 串行重跑 inference / script / runtime / production / public-file 均 passed,ui 03:19 passed 后被并行会话带新断言的 03:23 重跑 failed 覆盖;随后源码继续变动,基线表已由并行会话标记为指纹过期(OPEN),以最终一次静止树的串行重跑为准。\n\nCo-Authored-By: Claude Fable 5.1 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/83173c8e463ee7ae4bf370410b4646079fff04eb","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-09-04T20:27:57-07:00","added":["apps/api-fastify/prisma/migrations/20260905093000_model_catalog/migration.sql","apps/api-fastify/prisma/migrations/20260905110000_creative_projects/migration.sql","apps/api-fastify/src/creative-worker.ts","apps/api-fastify/src/modules/creative-project/creative-project.service.ts","apps/api-fastify/src/modules/creative-project/creative-worker.runtime.ts","apps/api-fastify/src/modules/material-factory/material-factory.error.ts","apps/api-fastify/src/modules/material-factory/model-catalog.service.ts","apps/api-fastify/src/routes/creative-project.ts","apps/api-fastify/test/creative-project.integration.test.ts","apps/api-nestjs/prisma/migrations/20260905093000_model_catalog/migration.sql","apps/api-nestjs/prisma/migrations/20260905110000_creative_projects/migration.sql","apps/api-nestjs/src/common/creative-transport.ts","apps/api-nestjs/src/creative-project/creative-project.controller.ts","apps/api-nestjs/src/creative-project/creative-project.service.ts","apps/api-nestjs/src/creative-project/creative-worker.runtime.ts","apps/api-nestjs/src/creative-worker.ts","apps/api-nestjs/src/material-factory/model-catalog.service.ts","apps/api-nestjs/test/creative-project.integration.test.ts","apps/web/src/app/auth/[action]/route.ts","apps/web/src/components/material-factory/CreativeProjectBar.tsx","apps/web/src/components/material-factory/PromoteDraftButton.tsx","apps/web/src/components/material-factory/creative-project-queries.ts","apps/web/src/components/material-factory/job-recovery.ts","apps/web/src/components/material-factory/model-catalog.tsx","apps/web/src/lib/browser-identity.tsx","apps/web/src/lib/server/browser-identity.ts","apps/web/src/store/useCreationPrefsStore.ts","docs/adr/0012-model-execution-routing-and-catalog.md","docs/adr/0013-llm-output-contract-boundary.md","docs/adr/0014-video-capability-drives-storyboard-size.md","docs/adr/0015-public-file-technical-boundary.md","docs/adr/0016-durable-creative-projects.md","docs/browser-enterprise-login.md","docs/product/creative-pipeline-design.md","packages/contracts/src/browser-identity.ts","packages/contracts/src/creative-project.ts","packages/contracts/src/model-catalog.test.ts","packages/contracts/src/storyboard-llm.test.ts","packages/contracts/src/storyboard-llm.ts","packages/contracts/src/video-capability.test.ts","packages/contracts/src/video-capability.ts","packages/enterprise-identity/src/browser-session.test.ts","packages/enterprise-identity/src/browser-session.ts","reports/project-analysis-2026-09-05-revalidated.md","reports/project-analysis-2026-09-05.md","reports/ui-acceptance.draft-import.png"],"removed":["apps/web/src/components/material-factory/LyricsStudio.tsx"],"modified":[".claude/launch.json","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/material-factory/material-factory.service.ts","apps/api-fastify/src/modules/material-factory/material-sidecar.client.ts","apps/api-fastify/src/modules/material-factory/shooting-script.service.ts","apps/api-fastify/src/modules/material-production/material-production.service.ts","apps/api-fastify/src/modules/material-production/object-storage.service.ts","apps/api-fastify/src/routes/material-factory.ts","apps/api-fastify/test/http.acceptance.test.ts","apps/api-fastify/test/material-inference.acceptance.test.ts","apps/api-fastify/test/material-script.acceptance.test.ts","apps/api-fastify/test/object-storage.integration.test.ts","apps/api-nestjs/package.json","apps/api-nestjs/prisma/schema.prisma","apps/api-nestjs/src/material-factory/material-factory.controller.ts","apps/api-nestjs/src/material-factory/material-factory.module.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/shooting-script.controller.ts","apps/api-nestjs/src/material-factory/shooting-script.service.ts","apps/api-nestjs/src/material-production/material-production.service.ts","apps/api-nestjs/src/material-production/object-storage.service.ts","apps/api-nestjs/test/http.acceptance.test.ts","apps/api-nestjs/test/material-inference.acceptance.test.ts","apps/api-nestjs/test/material-script.acceptance.test.ts","apps/api-nestjs/test/object-storage.integration.test.ts","apps/web/.env.example","apps/web/next.config.ts","apps/web/package.json","apps/web/src/app/api/[...path]/route.ts","apps/web/src/app/layout.tsx","apps/web/src/app/page.tsx","apps/web/src/components/material-factory/BrandHub.tsx","apps/web/src/components/material-factory/CreateStudio.tsx","apps/web/src/components/material-factory/EditStudio.tsx","apps/web/src/components/material-factory/FactoryShell.tsx","apps/web/src/components/material-factory/InpaintStudio.tsx","apps/web/src/components/material-factory/LandingGate.tsx","apps/web/src/components/material-factory/ModelConnectionsStudio.tsx","apps/web/src/components/material-factory/ModelOperationsDashboard.tsx","apps/web/src/components/material-factory/PipelineFlow.tsx","apps/web/src/components/material-factory/ProductionDetail.tsx","apps/web/src/components/material-factory/RoleConfirmPanel.tsx","apps/web/src/components/material-factory/ScriptStudio.tsx","apps/web/src/components/material-factory/ShotBoard.tsx","apps/web/src/components/material-factory/StoryboardStudio.tsx","apps/web/src/components/material-factory/TaskCenter.tsx","apps/web/src/components/material-factory/TemplateStudio.tsx","apps/web/src/components/material-factory/VideoStudio.tsx","apps/web/src/components/material-factory/constants.ts","apps/web/src/components/material-factory/queries.ts","apps/web/src/components/material-factory/ui.tsx","apps/web/src/hooks/useRealtime.ts","apps/web/src/lib/api.ts","apps/web/src/lib/types.ts","apps/web/src/store/useFactoryStore.ts","deploy/vm/Dockerfile","deploy/vm/docker-compose.yml","docs/README.md","docs/adr/0005-use-prisma.md","docs/adr/0008-monorepo-pnpm-turborepo.md","docs/adr/0011-consume-enterprise-idp-access-tokens.md","docs/adr/README.md","docs/deploy-vm.md","docs/domain-glossary.md","docs/domain/material-production-blueprint.md","docs/domain/module-boundary.md","docs/product/controlled-ai-material-factory.md","docs/product/creative-workflow-analysis.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","output/hi-atelier-posters-4k/final/01-brand-standard-4k.png","output/hi-atelier-posters-4k/final/02-dual-mode-4k.png","output/hi-atelier-posters-4k/final/03-story-to-screen-4k.png","output/hi-atelier-posters-4k/final/04-proof-first-delivery-4k.png","output/hi-atelier-posters-4k/final/contact-sheet.jpg","output/hi-atelier-posters-4k/manifest.json","output/hi-atelier-posters-4k/provenance.md","output/hi-atelier-posters-4k/render_posters.py","packages/contracts/src/index.ts","packages/contracts/src/material.test.ts","packages/contracts/src/material.ts","packages/contracts/src/production.ts","packages/contracts/src/script-to-storyboard.test.ts","packages/contracts/src/script-to-storyboard.ts","packages/contracts/src/script.ts","packages/enterprise-identity/src/index.ts","packages/public-file/README.md","pnpm-lock.yaml","reports/adversarial-acceptance-audit.latest.md","reports/contract-consumers.latest.json","reports/full-ux-audit-2026-08-28/README.md","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/storyboard-director-guard.latest.json","reports/ui-acceptance.desktop.png","reports/ui-acceptance.latest.json","reports/ui-acceptance.mobile.png","reports/ui-acceptance.production.png","reports/validation-source.latest.json","scripts/check-migrations.mjs","scripts/check-module-boundary.mjs","scripts/check-production-security.mjs","scripts/check-public-file-acceptance.mjs","scripts/check-startup-acceptance.mjs","scripts/check-ui-acceptance.mjs","services/model-sidecar/README.md","services/model-sidecar/main.py","services/model-sidecar/pyproject.toml","turbo.json"]}],"total_commits":0,"head_commit":{"id":"a08628dd493b9ddcb20d9e326758d64dc36a0056","message":"chore(governance): 对抗性验收复审与门禁收紧;检查点收纳并行会话进行中工作\n\n对抗审计(本会话):\n- script 验收报告绑定源码指纹并登记为源码绑定重型门禁(此前基线表 ✅ 从未被机器比对)\n- ownTests 棘轮地板 31→48;check:production 禁 skip 名单扩到 nestjs/fastify-production\n- 定位并复现脚本验收固定租户的并行 runner 污染,验证 run-scoped 租户修复(Fastify 套件 ×2 通过)\n- 真实库探针:非终态结果 fail-open、reconcile 判责根因错(并行会话已修,本会话复验,套件各 12/12)\n- 并行会话新增契约注释命中命名禁用词 terminal,改为 final\n- 记录进行中的 Compose 认证模式改动使 check:production-security 红,未放宽检查器\n- 对抗审计报告新增复审节,CLAUDE.md 复审节与基线表行同步\n\n检查点同时收纳并行会话进行中的工作:创作 Worker 模块隔离、视频进度契约、队列隔离策略、\n模型凭证存储(packages/model-credentials、sidecar model_credentials.py)、脚本验收 run-scoped 租户、\nCompose MATERIAL_AUTH_MODE 等。全仓 typecheck / lint 通过;pnpm check 因 productionSecurityViolations=1\n(Compose IdP 配置改为可选,待与检查器规则同步)未全绿。可用 git reset --soft HEAD~1 撤销本检查点。\n\nCo-Authored-By: Claude Fable 5.1 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/a08628dd493b9ddcb20d9e326758d64dc36a0056","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-09-04T21:34:23-07:00","added":["apps/api-fastify/test/creative-queue-isolation.integration.test.ts","apps/api-fastify/test/creative-video-progress.integration.test.ts","apps/api-fastify/test/model-credentials.integration.test.ts","apps/api-nestjs/src/creative-project/creative-worker.module.ts","apps/api-nestjs/test/creative-queue-isolation.integration.test.ts","apps/api-nestjs/test/creative-video-progress.integration.test.ts","apps/api-nestjs/test/model-credentials.integration.test.ts","docs/model-credentials.md","packages/contracts/src/creative-queue-policy.test.ts","packages/contracts/src/creative-queue-policy.ts","packages/contracts/src/creative-video-progress.test.ts","packages/contracts/src/creative-video-progress.ts","packages/model-credentials/package.json","packages/model-credentials/src/index.test.ts","packages/model-credentials/src/index.ts","packages/model-credentials/tsconfig.json","reports/acceptance-convergence-2026-09-05.md","reports/creative-breakpoint-fix-2026-09-05.md","reports/model-credential-error.desktop.png","reports/model-credential-error.mobile.png","services/model-sidecar/model_credentials.py","services/model-sidecar/test_llm_preflight.py","services/model-sidecar/test_managed_credentials.py"],"removed":[],"modified":[".dockerignore","CLAUDE.md","apps/api-fastify/package.json","apps/api-fastify/src/modules/creative-project/creative-project.service.ts","apps/api-fastify/src/modules/creative-project/creative-worker.runtime.ts","apps/api-fastify/src/modules/material-factory/material-factory.service.ts","apps/api-fastify/src/modules/material-factory/model-catalog.service.ts","apps/api-fastify/src/modules/material-factory/model-connector.client.ts","apps/api-fastify/src/modules/material-production/runtime-trust.ts","apps/api-fastify/test/creative-project.integration.test.ts","apps/api-fastify/test/material-runtime-trust.test.ts","apps/api-fastify/test/material-script.acceptance.test.ts","apps/api-nestjs/package.json","apps/api-nestjs/src/common/material-runtime.guard.ts","apps/api-nestjs/src/creative-project/creative-project.service.ts","apps/api-nestjs/src/creative-project/creative-worker.runtime.ts","apps/api-nestjs/src/creative-worker.ts","apps/api-nestjs/src/material-factory/material-factory.service.ts","apps/api-nestjs/src/material-factory/model-catalog.service.ts","apps/api-nestjs/src/material-factory/model-connector.client.ts","apps/api-nestjs/test/creative-project.integration.test.ts","apps/api-nestjs/test/material-runtime-guard.test.ts","apps/api-nestjs/test/material-script.acceptance.test.ts","apps/web/src/app/api/[...path]/route.ts","apps/web/src/app/auth/[action]/route.ts","apps/web/src/components/material-factory/FactoryShell.tsx","apps/web/src/components/material-factory/ModelConnectionsStudio.tsx","apps/web/src/lib/browser-identity.tsx","apps/web/src/lib/server/browser-identity.ts","deploy/vm/.env.example","deploy/vm/Dockerfile","deploy/vm/docker-compose.yml","deploy/vm/sidecar-bailian-requirements.txt","deploy/vm/sidecar-ocr-requirements.txt","docs/adr/0012-model-execution-routing-and-catalog.md","docs/adr/0016-durable-creative-projects.md","docs/adr/README.md","packages/contracts/src/browser-identity.ts","packages/contracts/src/creative-project.ts","packages/contracts/src/index.ts","packages/contracts/src/material.ts","packages/enterprise-identity/src/index.ts","pnpm-lock.yaml","reports/adversarial-acceptance-audit.latest.md","reports/baseline.json","reports/contract-consumers.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/storyboard-director-guard.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/validation-source.latest.json","scripts/check-production-acceptance.mjs","scripts/check-script-acceptance.mjs","scripts/check-ui-acceptance.mjs","scripts/governance-report.mjs","services/model-sidecar/main.py","services/model-sidecar/pyproject.toml","services/model-sidecar/uv.lock"]},"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":49919,"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":5,"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-04T23:33: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
|
1788582875
|
1788582909
|
0
|
1788582875
|
1788582909
|
group: governance-${{ github.workflow }}-${{ githu group: governance-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: "true"
...
|
governance-governance.yml-refs/heads/main
|
1
|
Edit
Delete
|
|
23641
|
feat: 汇总内容创作、分镜视频、模型接入与平台体验更新
|
57
|
5
|
governance.yml
|
13
|
5
|
0
|
refs/heads/main
|
5d1fb824260721f7fbd8bed2f58fb239d5f77f13
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"a08628dd493b9ddcb20d9e326758d64dc36a0056","after":"5d1fb824260721f7fbd8bed2f58fb239d5f77f13","compare_url":"https://gitea.g-hi.com/luoanwu/image-generation/compare/a08628dd493b9ddcb20d9e326758d64dc36a0056...5d1fb824260721f7fbd8bed2f58fb239d5f77f13","commits":[{"id":"5d1fb824260721f7fbd8bed2f58fb239d5f77f13","message":"feat: 汇总内容创作、分镜视频、模型接入与平台体验更新\n\n同步双后端契约及迁移、前端工作台、部署配置、文档、验收报告和创作产物。排除本地测试凭证与主密钥。lint、typecheck、245 项契约测试、41 项身份测试及 25 项定向回归通过;治理审计源码指纹过期问题仍保留,完整发布门禁未通过。\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/5d1fb824260721f7fbd8bed2f58fb239d5f77f13","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-09-05T07:34:58-07:00","added":["apps/api-fastify/prisma/migrations/20260905180000_content_workbench/migration.sql","apps/api-fastify/src/modules/creative-project/content.service.ts","apps/api-fastify/src/modules/material-production/formal-ocr.ts","apps/api-fastify/test/brand-logo-generation.integration.test.ts","apps/api-fastify/test/contact-sheet-video.integration.test.ts","apps/api-fastify/test/content-workbench.integration.test.ts","apps/api-fastify/test/formal-ocr.integration.test.ts","apps/api-fastify/test/image-size.integration.test.ts","apps/api-fastify/test/image-source-provenance.integration.test.ts","apps/api-fastify/test/minimax-video.integration.test.ts","apps/api-fastify/test/production-template-brand.integration.test.ts","apps/api-fastify/test/script-source-assistant.integration.test.ts","apps/api-fastify/test/storyboard-refinement.integration.test.ts","apps/api-nestjs/prisma/migrations/20260905180000_content_workbench/migration.sql","apps/api-nestjs/src/creative-project/content.service.ts","apps/api-nestjs/src/material-production/formal-ocr.ts","apps/api-nestjs/test/brand-logo-generation.integration.test.ts","apps/api-nestjs/test/contact-sheet-video.integration.test.ts","apps/api-nestjs/test/content-workbench.integration.test.ts","apps/api-nestjs/test/formal-ocr.integration.test.ts","apps/api-nestjs/test/image-size.integration.test.ts","apps/api-nestjs/test/image-source-provenance.integration.test.ts","apps/api-nestjs/test/minimax-video.integration.test.ts","apps/api-nestjs/test/production-dispatch-fairness.integration.test.ts","apps/api-nestjs/test/production-template-brand.integration.test.ts","apps/api-nestjs/test/script-source-assistant.integration.test.ts","apps/api-nestjs/test/storyboard-refinement.integration.test.ts","apps/web/src/app/admin/layout.tsx","apps/web/src/app/admin/operations/page.tsx","apps/web/src/app/admin/page.tsx","apps/web/src/components/admin/AdminShell.tsx","apps/web/src/components/admin/ModelConnectionsStudio.tsx","apps/web/src/components/admin/ModelOperationsDashboard.tsx","apps/web/src/components/admin/admin.module.css","apps/web/src/components/material-factory/BrandLogoEditor.tsx","apps/web/src/components/material-factory/BrandLogoGeneration.tsx","apps/web/src/components/material-factory/ContentStudio.tsx","apps/web/src/components/material-factory/QueryFeedback.tsx","apps/web/src/components/material-factory/RoleReferencePreview.tsx","apps/web/src/components/material-factory/StoryboardContactSheet.tsx","apps/web/src/components/material-factory/StoryboardScriptImport.tsx","apps/web/src/components/material-factory/StoryboardVisualAssetImport.tsx","apps/web/src/components/material-factory/VideoContactImport.tsx","apps/web/src/components/material-factory/WorkspaceHome.tsx","apps/web/src/components/material-factory/contact-sheet-import.ts","apps/web/src/components/material-factory/content-studio.module.css","apps/web/src/components/material-factory/material-download.ts","apps/web/src/components/material-factory/production-labels.ts","apps/web/src/components/material-factory/storyboard-contact-sheet.ts","apps/web/src/components/material-factory/storyboard-visual-assets.ts","apps/web/src/components/material-factory/video-shot-progress.ts","apps/web/src/lib/api-error-message.ts","apps/web/src/store/useBrandSelectionStore.ts","deploy/vm/clamav-supervisor.sh","deploy/vm/sidecar-arm64-requirements.txt","docs/design/platform-admin-concept.png","docs/design/platform-admin.md","docs/design/workspace-experience.md","docs/product/acceptance-and-status.md","docs/product/content-creation-workbench.md","docs/product/platform-module-map.md","output/haizan-pilot/brief.json","output/haizan-pilot/haizan-weekend-v1.png","output/haizan-pilot/haizan-weekend-v2.png","output/haizan-pilot/haizan-weekend-v2.prompt.md","output/hi-atelier-promo-30s/assets/mix.wav","output/hi-atelier-promo-30s/assets/music-original.wav","output/hi-atelier-promo-30s/assets/picture.mp4","output/hi-atelier-promo-30s/assets/voice-0.aiff","output/hi-atelier-promo-30s/assets/voice-0.wav","output/hi-atelier-promo-30s/assets/voice-1.aiff","output/hi-atelier-promo-30s/assets/voice-1.wav","output/hi-atelier-promo-30s/assets/voice-2.aiff","output/hi-atelier-promo-30s/assets/voice-2.wav","output/hi-atelier-promo-30s/assets/voice-3.aiff","output/hi-atelier-promo-30s/assets/voice-3.wav","output/hi-atelier-promo-30s/assets/voice-4.aiff","output/hi-atelier-promo-30s/assets/voice-4.wav","output/hi-atelier-promo-30s/assets/voice-5.aiff","output/hi-atelier-promo-30s/assets/voice-5.wav","output/hi-atelier-promo-30s/audio-check.json","output/hi-atelier-promo-30s/captions.srt","output/hi-atelier-promo-30s/cover.png","output/hi-atelier-promo-30s/encoded-preview.jpg","output/hi-atelier-promo-30s/frames/01.png","output/hi-atelier-promo-30s/frames/02.png","output/hi-atelier-promo-30s/frames/03.png","output/hi-atelier-promo-30s/frames/04.png","output/hi-atelier-promo-30s/frames/05.png","output/hi-atelier-promo-30s/frames/06.png","output/hi-atelier-promo-30s/frames/encoded-01.jpg","output/hi-atelier-promo-30s/frames/encoded-02.jpg","output/hi-atelier-promo-30s/frames/encoded-03.jpg","output/hi-atelier-promo-30s/frames/encoded-04.jpg","output/hi-atelier-promo-30s/frames/encoded-05.jpg","output/hi-atelier-promo-30s/frames/encoded-06.jpg","output/hi-atelier-promo-30s/hi-atelier-promo-30s.mp4","output/hi-atelier-promo-30s/render_video.py","output/hi-atelier-promo-30s/storyboard-preview.jpg","output/hi-atelier-promo-30s/storyboard.json","output/hi-atelier-promo-30s/validation.json","output/hi-atelier-promo-30s/创意与制作说明.md","output/marketing/hi-atelier-compintel-2026-09-05.desktop.png","output/marketing/hi-atelier-compintel-2026-09-05.html","output/marketing/hi-atelier-compintel-2026-09-05.mobile.png","output/marketing/hi-atelier-compintel-2026-09-05.validation.json","output/marketing/hi-atelier-product-poster-20260905-v1.png","output/marketing/hi-atelier-product-poster-20260905-v1.prompt.md","output/marketing/hi-atelier-sales-poster-02-store-20260905.png","output/marketing/hi-atelier-sales-poster-03-delivery-20260905.png","output/marketing/hi-atelier-sales-poster-20260905-v1.png","output/marketing/hi-atelier-sales-poster-20260905-v1.prompt.md","output/marketing/hi-atelier-sales-posters-3pack-20260905.zip","output/marketing/hi-atelier-sales-series-20260905.prompts.md","packages/contracts/src/brand-logo.test.ts","packages/contracts/src/content.test.ts","packages/contracts/src/content.ts","packages/contracts/src/deepseek.test.ts","packages/contracts/src/formal-ocr.test.ts","packages/contracts/src/image-edit.test.ts","packages/contracts/src/image-edit.ts","packages/contracts/src/image-size.test.ts","packages/contracts/src/image-size.ts","packages/contracts/src/material-runtime-routing.test.ts","packages/contracts/src/minimax.test.ts","packages/contracts/src/script-source-assistant.test.ts","packages/contracts/src/storyboard-contact.test.ts","packages/contracts/src/storyboard-contact.ts","packages/enterprise-identity/src/mutation-origin.test.ts","reports/api-validation-error-2026-09-05.md","reports/browser-origin-save-2026-09-05.md","reports/content-module-500-recovery-2026-09-05.md","reports/content-route-recovery-2026-09-05.md","reports/deep-reassessment-2026-09-05/README.md","reports/deep-reassessment-2026-09-05/callback-probe.json","reports/deep-reassessment-2026-09-05/callback-probe.py","reports/deep-reassessment-2026-09-05/evidence-index.json","reports/deep-reassessment-2026-09-05/fastify-bypass-probe.cjs","reports/deep-reassessment-2026-09-05/fastify-bypass-probe.json","reports/deep-reassessment-2026-09-05/http-probes.json","reports/deep-reassessment-2026-09-05/model-readiness.json","reports/deepseek-text-2026-09-05/README.md","reports/documentation-refresh-2026-09-05.json","reports/documentation-refresh-2026-09-05.md","reports/haizan-pilot-2026-09-05/README.md","reports/haizan-pilot-2026-09-05/asset-candidates.json","reports/haizan-pilot-2026-09-05/asset-v2.json","reports/haizan-pilot-2026-09-05/candidate-existing-haizan.png","reports/haizan-pilot-2026-09-05/container-recovery-final.json","reports/haizan-pilot-2026-09-05/container-restoration.json","reports/haizan-pilot-2026-09-05/containers-before-restart.jsonl","reports/haizan-pilot-2026-09-05/deployment-health.txt","reports/haizan-pilot-2026-09-05/docker-restart-verification.json","reports/haizan-pilot-2026-09-05/docker-settings.before.json","reports/haizan-pilot-2026-09-05/infrastructure.json","reports/haizan-pilot-2026-09-05/pilot-record.json","reports/haizan-pilot-2026-09-05/production-after-quality.json","reports/haizan-pilot-2026-09-05/production-pending-review.json","reports/haizan-pilot-2026-09-05/quality-response.json","reports/haizan-pilot-2026-09-05/quality-v2-response.json","reports/haizan-pilot-2026-09-05/revision-v2-response.json","reports/haizan-pilot-2026-09-05/submit-response.json","reports/main-submission-2026-09-05.md","reports/minimax-h3-2026-09-05/README.md","reports/minimax-runtime-recovery-2026-09-05.md","reports/platform-admin-2026-09-05/admin-desktop.png","reports/platform-admin-2026-09-05/admin-mobile.png","reports/platform-admin-2026-09-05/model-api-key-saved.png","reports/platform-admin-2026-09-05/model-credential-error.desktop.png","reports/platform-admin-2026-09-05/model-credential-error.mobile.png","reports/platform-admin-2026-09-05/ui-acceptance.desktop.png","reports/platform-admin-2026-09-05/ui-acceptance.json","reports/platform-admin-2026-09-05/ui-acceptance.mobile.png","reports/platform-admin-2026-09-05/ui-acceptance.production.png","reports/product-design-review-2026-09-05/01-entry.png","reports/product-design-review-2026-09-05/02-brand-home.png","reports/product-design-review-2026-09-05/03-template-edit.png","reports/product-design-review-2026-09-05/04-production.png","reports/product-design-review-2026-09-05/05-production-brief.png","reports/product-design-review-2026-09-05/06-review.png","reports/product-design-review-2026-09-05/07-delivery.png","reports/product-design-review-2026-09-05/README.md","reports/product-ux-fixes-2026-09-05/README.md","reports/product-ux-fixes-2026-09-05/admin-desktop.png","reports/product-ux-fixes-2026-09-05/admin-mobile.png","reports/product-ux-fixes-2026-09-05/final-verification.json","reports/product-ux-fixes-2026-09-05/live-edit.png","reports/product-ux-fixes-2026-09-05/live-home.png","reports/product-ux-fixes-2026-09-05/model-api-key-saved.png","reports/product-ux-fixes-2026-09-05/model-credential-error.desktop.png","reports/product-ux-fixes-2026-09-05/model-credential-error.mobile.png","reports/product-ux-fixes-2026-09-05/ui-acceptance.desktop.png","reports/product-ux-fixes-2026-09-05/ui-acceptance.latest.json","reports/product-ux-fixes-2026-09-05/ui-acceptance.mobile.png","reports/product-ux-fixes-2026-09-05/ui-acceptance.production.png","reports/product-ux-fixes-2026-09-05/ux-edit.desktop.png","reports/product-ux-fixes-2026-09-05/ux-home.desktop.png","reports/product-ux-fixes-2026-09-05/ux-home.mobile.png","reports/product-ux-fixes-2026-09-05/ux-intake.desktop.png","reports/project-deep-analysis-2026-09-05.md","reports/script-integration-audit-2026-09-05/README.md","reports/script-integration-audit-2026-09-05/probe.py","reports/script-integration-audit-2026-09-05/runtime-evidence.json","reports/script-integration-audit-2026-09-05/verification.json","reports/storyboard-import-2026-09-05/README.md","reports/storyboard-import-2026-09-05/model-generation.md","reports/storyboard-import-2026-09-05/saved-project.json","reports/storyboard-refinement-2026-09-05/README.md","reports/storyboard-visual-assets-2026-09-05/README.md","reports/storyboard-visual-assets-2026-09-05/saved-project.json","reports/text-edit-verification-2026-09-05/README.md","reports/text-edit-verification-2026-09-05/browser.json","reports/text-edit-verification-2026-09-05/failed.desktop.png","reports/text-edit-verification-2026-09-05/fields.mobile.png","reports/text-edit-verification-2026-09-05/ocr-existing-local.json","reports/text-edit-verification-2026-09-05/ocr-runtime.json","reports/text-edit-verification-2026-09-05/runtime-contract-rejection.json","reports/text-edit-verification-2026-09-05/runtime.json","reports/text-edit-verification-2026-09-05/verification.json","reports/text-edit-verification-2026-09-05/verification.mobile.png","reports/verified-creative-breakpoint-2026-09-05/README.md","reports/verified-creative-breakpoint-2026-09-05/adversarial-acceptance-audit.latest.md","reports/verified-creative-breakpoint-2026-09-05/baseline.json","reports/verified-creative-breakpoint-2026-09-05/governance.latest.json","reports/verified-creative-breakpoint-2026-09-05/inference-acceptance.latest.json","reports/verified-creative-breakpoint-2026-09-05/production-acceptance.latest.json","reports/verified-creative-breakpoint-2026-09-05/public-file-acceptance.latest.json","reports/verified-creative-breakpoint-2026-09-05/runtime-acceptance.latest.json","reports/verified-creative-breakpoint-2026-09-05/runtime-prior-failure.json","reports/verified-creative-breakpoint-2026-09-05/script-acceptance.latest.json","reports/verified-creative-breakpoint-2026-09-05/source.tar.gz","reports/verified-creative-breakpoint-2026-09-05/source.tar.gz.sha256","reports/verified-creative-breakpoint-2026-09-05/ui-acceptance.desktop.png","reports/verified-creative-breakpoint-2026-09-05/ui-acceptance.draft-import.png","reports/verified-creative-breakpoint-2026-09-05/ui-acceptance.latest.json","reports/verified-creative-breakpoint-2026-09-05/ui-acceptance.mobile.png","reports/verified-creative-breakpoint-2026-09-05/ui-acceptance.production.png","scripts/api-error-message.test.mjs","scripts/check-pilot-infrastructure.mjs","scripts/clamav-supervisor.test.mjs","scripts/job-recovery.test.mjs","scripts/lib/prd-ui-acceptance.mjs","scripts/lib/source-fingerprint.test.mjs","scripts/material-download.test.mjs","scripts/repair-image-source-provenance.mjs","scripts/storyboard-contact-sheet.test.mjs","scripts/storyboard-visual-assets.test.mjs","scripts/video-shot-progress.test.mjs","services/model-sidecar/minimax_video.py","services/model-sidecar/test_deepseek.py","services/model-sidecar/test_minimax_video.py","services/model-sidecar/test_text_edit.py","services/model-sidecar/text_edit.py"],"removed":["apps/web/src/components/material-factory/ModelConnectionsStudio.tsx","apps/web/src/components/material-factory/ModelOperationsDashboard.tsx"],"modified":[".gitignore","CLAUDE.md","README.md","apps/api-fastify/.env.example","apps/api-fastify/prisma/schema.prisma","apps/api-fastify/src/creative-worker.ts","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-factory/shooting-script.service.ts","apps/api-fastify/src/modules/material-production/material-production.service.ts","apps/api-fastify/src/modules/material-production/runtime-trust.ts","apps/api-fastify/src/routes/creative-project.ts","apps/api-fastify/src/routes/material-factory.ts","apps/api-fastify/test/creative-project.integration.test.ts","apps/api-fastify/test/material-runtime-trust.test.ts","apps/api-fastify/test/model-connector.client.test.ts","apps/api-nestjs/.env.example","apps/api-nestjs/prisma/schema.prisma","apps/api-nestjs/src/common/material-runtime.guard.ts","apps/api-nestjs/src/creative-project/creative-project.controller.ts","apps/api-nestjs/src/creative-project/creative-project.service.ts","apps/api-nestjs/src/creative-worker.ts","apps/api-nestjs/src/material-factory/material-factory.controller.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-factory/shooting-script.service.ts","apps/api-nestjs/src/material-production/job-intent-dispatcher.service.ts","apps/api-nestjs/src/material-production/material-production.service.ts","apps/api-nestjs/test/creative-project.integration.test.ts","apps/api-nestjs/test/material-runtime-guard.test.ts","apps/api-nestjs/test/model-connector.client.test.ts","apps/web/next.config.ts","apps/web/src/app/api/[...path]/route.ts","apps/web/src/components/material-factory/BrandHub.tsx","apps/web/src/components/material-factory/CreateStudio.tsx","apps/web/src/components/material-factory/CreativeProjectBar.tsx","apps/web/src/components/material-factory/DeliveryCenter.tsx","apps/web/src/components/material-factory/EditStudio.tsx","apps/web/src/components/material-factory/ExportModal.tsx","apps/web/src/components/material-factory/FactoryShell.tsx","apps/web/src/components/material-factory/InpaintStudio.tsx","apps/web/src/components/material-factory/InstanceGallery.tsx","apps/web/src/components/material-factory/LandingGate.tsx","apps/web/src/components/material-factory/MasterCanvas.tsx","apps/web/src/components/material-factory/PipelineFlow.tsx","apps/web/src/components/material-factory/ProductionDetail.tsx","apps/web/src/components/material-factory/ReviewCenter.tsx","apps/web/src/components/material-factory/RoleConfirmPanel.tsx","apps/web/src/components/material-factory/ScriptStudio.tsx","apps/web/src/components/material-factory/StoryboardStudio.tsx","apps/web/src/components/material-factory/TaskCenter.tsx","apps/web/src/components/material-factory/TemplateStudio.tsx","apps/web/src/components/material-factory/VideoStudio.tsx","apps/web/src/components/material-factory/job-recovery.ts","apps/web/src/components/material-factory/model-catalog.tsx","apps/web/src/components/material-factory/queries.ts","apps/web/src/components/material-factory/storyboard-director.ts","apps/web/src/components/material-factory/ui.tsx","apps/web/src/lib/api.ts","apps/web/src/store/useCreationPrefsStore.ts","apps/web/src/store/useFactoryStore.ts","apps/web/tsconfig.json","deploy/vm/.env.example","deploy/vm/deploy.sh","deploy/vm/docker-compose.yml","deploy/vm/sidecar.Dockerfile","docs/README.md","docs/adr/0010-controlled-ai-material-factory.md","docs/adr/0011-consume-enterprise-idp-access-tokens.md","docs/adr/0012-model-execution-routing-and-catalog.md","docs/adr/0016-durable-creative-projects.md","docs/browser-enterprise-login.md","docs/deploy-vm.md","docs/domain-glossary.md","docs/domain/material-production-blueprint.md","docs/domain/owner-matrix.md","docs/model-credentials.md","docs/product/controlled-ai-material-factory.md","docs/product/creative-pipeline-design.md","docs/product/creative-workflow-analysis.md","docs/standards/backend-standard.md","docs/standards/frontend-standard.md","packages/contracts/src/creative-project.ts","packages/contracts/src/creative-queue-policy.ts","packages/contracts/src/index.ts","packages/contracts/src/material.ts","packages/contracts/src/production.ts","packages/contracts/src/script-to-storyboard.test.ts","packages/contracts/src/script-to-storyboard.ts","packages/contracts/src/script.ts","packages/contracts/src/storyboard-llm.test.ts","packages/contracts/src/storyboard-llm.ts","packages/contracts/src/storyboard.ts","packages/contracts/src/video-capability.ts","packages/enterprise-identity/src/browser-session.ts","reports/contract-consumers.latest.json","reports/creative-breakpoint-fix-2026-09-05.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/validation-source.latest.json","scripts/check-production-security.mjs","scripts/check-ui-acceptance.mjs","scripts/lib/source-fingerprint.mjs","services/model-sidecar/main.py","services/model-sidecar/test_mask_composite.py"]}],"total_commits":0,"head_commit":{"id":"5d1fb824260721f7fbd8bed2f58fb239d5f77f13","message":"feat: 汇总内容创作、分镜视频、模型接入与平台体验更新\n\n同步双后端契约及迁移、前端工作台、部署配置、文档、验收报告和创作产物。排除本地测试凭证与主密钥。lint、typecheck、245 项契约测试、41 项身份测试及 25 项定向回归通过;治理审计源码指纹过期问题仍保留,完整发布门禁未通过。\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/5d1fb824260721f7fbd8bed2f58fb239d5f77f13","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-09-05T07:34:58-07:00","added":["apps/api-fastify/prisma/migrations/20260905180000_content_workbench/migration.sql","apps/api-fastify/src/modules/creative-project/content.service.ts","apps/api-fastify/src/modules/material-production/formal-ocr.ts","apps/api-fastify/test/brand-logo-generation.integration.test.ts","apps/api-fastify/test/contact-sheet-video.integration.test.ts","apps/api-fastify/test/content-workbench.integration.test.ts","apps/api-fastify/test/formal-ocr.integration.test.ts","apps/api-fastify/test/image-size.integration.test.ts","apps/api-fastify/test/image-source-provenance.integration.test.ts","apps/api-fastify/test/minimax-video.integration.test.ts","apps/api-fastify/test/production-template-brand.integration.test.ts","apps/api-fastify/test/script-source-assistant.integration.test.ts","apps/api-fastify/test/storyboard-refinement.integration.test.ts","apps/api-nestjs/prisma/migrations/20260905180000_content_workbench/migration.sql","apps/api-nestjs/src/creative-project/content.service.ts","apps/api-nestjs/src/material-production/formal-ocr.ts","apps/api-nestjs/test/brand-logo-generation.integration.test.ts","apps/api-nestjs/test/contact-sheet-video.integration.test.ts","apps/api-nestjs/test/content-workbench.integration.test.ts","apps/api-nestjs/test/formal-ocr.integration.test.ts","apps/api-nestjs/test/image-size.integration.test.ts","apps/api-nestjs/test/image-source-provenance.integration.test.ts","apps/api-nestjs/test/minimax-video.integration.test.ts","apps/api-nestjs/test/production-dispatch-fairness.integration.test.ts","apps/api-nestjs/test/production-template-brand.integration.test.ts","apps/api-nestjs/test/script-source-assistant.integration.test.ts","apps/api-nestjs/test/storyboard-refinement.integration.test.ts","apps/web/src/app/admin/layout.tsx","apps/web/src/app/admin/operations/page.tsx","apps/web/src/app/admin/page.tsx","apps/web/src/components/admin/AdminShell.tsx","apps/web/src/components/admin/ModelConnectionsStudio.tsx","apps/web/src/components/admin/ModelOperationsDashboard.tsx","apps/web/src/components/admin/admin.module.css","apps/web/src/components/material-factory/BrandLogoEditor.tsx","apps/web/src/components/material-factory/BrandLogoGeneration.tsx","apps/web/src/components/material-factory/ContentStudio.tsx","apps/web/src/components/material-factory/QueryFeedback.tsx","apps/web/src/components/material-factory/RoleReferencePreview.tsx","apps/web/src/components/material-factory/StoryboardContactSheet.tsx","apps/web/src/components/material-factory/StoryboardScriptImport.tsx","apps/web/src/components/material-factory/StoryboardVisualAssetImport.tsx","apps/web/src/components/material-factory/VideoContactImport.tsx","apps/web/src/components/material-factory/WorkspaceHome.tsx","apps/web/src/components/material-factory/contact-sheet-import.ts","apps/web/src/components/material-factory/content-studio.module.css","apps/web/src/components/material-factory/material-download.ts","apps/web/src/components/material-factory/production-labels.ts","apps/web/src/components/material-factory/storyboard-contact-sheet.ts","apps/web/src/components/material-factory/storyboard-visual-assets.ts","apps/web/src/components/material-factory/video-shot-progress.ts","apps/web/src/lib/api-error-message.ts","apps/web/src/store/useBrandSelectionStore.ts","deploy/vm/clamav-supervisor.sh","deploy/vm/sidecar-arm64-requirements.txt","docs/design/platform-admin-concept.png","docs/design/platform-admin.md","docs/design/workspace-experience.md","docs/product/acceptance-and-status.md","docs/product/content-creation-workbench.md","docs/product/platform-module-map.md","output/haizan-pilot/brief.json","output/haizan-pilot/haizan-weekend-v1.png","output/haizan-pilot/haizan-weekend-v2.png","output/haizan-pilot/haizan-weekend-v2.prompt.md","output/hi-atelier-promo-30s/assets/mix.wav","output/hi-atelier-promo-30s/assets/music-original.wav","output/hi-atelier-promo-30s/assets/picture.mp4","output/hi-atelier-promo-30s/assets/voice-0.aiff","output/hi-atelier-promo-30s/assets/voice-0.wav","output/hi-atelier-promo-30s/assets/voice-1.aiff","output/hi-atelier-promo-30s/assets/voice-1.wav","output/hi-atelier-promo-30s/assets/voice-2.aiff","output/hi-atelier-promo-30s/assets/voice-2.wav","output/hi-atelier-promo-30s/assets/voice-3.aiff","output/hi-atelier-promo-30s/assets/voice-3.wav","output/hi-atelier-promo-30s/assets/voice-4.aiff","output/hi-atelier-promo-30s/assets/voice-4.wav","output/hi-atelier-promo-30s/assets/voice-5.aiff","output/hi-atelier-promo-30s/assets/voice-5.wav","output/hi-atelier-promo-30s/audio-check.json","output/hi-atelier-promo-30s/captions.srt","output/hi-atelier-promo-30s/cover.png","output/hi-atelier-promo-30s/encoded-preview.jpg","output/hi-atelier-promo-30s/frames/01.png","output/hi-atelier-promo-30s/frames/02.png","output/hi-atelier-promo-30s/frames/03.png","output/hi-atelier-promo-30s/frames/04.png","output/hi-atelier-promo-30s/frames/05.png","output/hi-atelier-promo-30s/frames/06.png","output/hi-atelier-promo-30s/frames/encoded-01.jpg","output/hi-atelier-promo-30s/frames/encoded-02.jpg","output/hi-atelier-promo-30s/frames/encoded-03.jpg","output/hi-atelier-promo-30s/frames/encoded-04.jpg","output/hi-atelier-promo-30s/frames/encoded-05.jpg","output/hi-atelier-promo-30s/frames/encoded-06.jpg","output/hi-atelier-promo-30s/hi-atelier-promo-30s.mp4","output/hi-atelier-promo-30s/render_video.py","output/hi-atelier-promo-30s/storyboard-preview.jpg","output/hi-atelier-promo-30s/storyboard.json","output/hi-atelier-promo-30s/validation.json","output/hi-atelier-promo-30s/创意与制作说明.md","output/marketing/hi-atelier-compintel-2026-09-05.desktop.png","output/marketing/hi-atelier-compintel-2026-09-05.html","output/marketing/hi-atelier-compintel-2026-09-05.mobile.png","output/marketing/hi-atelier-compintel-2026-09-05.validation.json","output/marketing/hi-atelier-product-poster-20260905-v1.png","output/marketing/hi-atelier-product-poster-20260905-v1.prompt.md","output/marketing/hi-atelier-sales-poster-02-store-20260905.png","output/marketing/hi-atelier-sales-poster-03-delivery-20260905.png","output/marketing/hi-atelier-sales-poster-20260905-v1.png","output/marketing/hi-atelier-sales-poster-20260905-v1.prompt.md","output/marketing/hi-atelier-sales-posters-3pack-20260905.zip","output/marketing/hi-atelier-sales-series-20260905.prompts.md","packages/contracts/src/brand-logo.test.ts","packages/contracts/src/content.test.ts","packages/contracts/src/content.ts","packages/contracts/src/deepseek.test.ts","packages/contracts/src/formal-ocr.test.ts","packages/contracts/src/image-edit.test.ts","packages/contracts/src/image-edit.ts","packages/contracts/src/image-size.test.ts","packages/contracts/src/image-size.ts","packages/contracts/src/material-runtime-routing.test.ts","packages/contracts/src/minimax.test.ts","packages/contracts/src/script-source-assistant.test.ts","packages/contracts/src/storyboard-contact.test.ts","packages/contracts/src/storyboard-contact.ts","packages/enterprise-identity/src/mutation-origin.test.ts","reports/api-validation-error-2026-09-05.md","reports/browser-origin-save-2026-09-05.md","reports/content-module-500-recovery-2026-09-05.md","reports/content-route-recovery-2026-09-05.md","reports/deep-reassessment-2026-09-05/README.md","reports/deep-reassessment-2026-09-05/callback-probe.json","reports/deep-reassessment-2026-09-05/callback-probe.py","reports/deep-reassessment-2026-09-05/evidence-index.json","reports/deep-reassessment-2026-09-05/fastify-bypass-probe.cjs","reports/deep-reassessment-2026-09-05/fastify-bypass-probe.json","reports/deep-reassessment-2026-09-05/http-probes.json","reports/deep-reassessment-2026-09-05/model-readiness.json","reports/deepseek-text-2026-09-05/README.md","reports/documentation-refresh-2026-09-05.json","reports/documentation-refresh-2026-09-05.md","reports/haizan-pilot-2026-09-05/README.md","reports/haizan-pilot-2026-09-05/asset-candidates.json","reports/haizan-pilot-2026-09-05/asset-v2.json","reports/haizan-pilot-2026-09-05/candidate-existing-haizan.png","reports/haizan-pilot-2026-09-05/container-recovery-final.json","reports/haizan-pilot-2026-09-05/container-restoration.json","reports/haizan-pilot-2026-09-05/containers-before-restart.jsonl","reports/haizan-pilot-2026-09-05/deployment-health.txt","reports/haizan-pilot-2026-09-05/docker-restart-verification.json","reports/haizan-pilot-2026-09-05/docker-settings.before.json","reports/haizan-pilot-2026-09-05/infrastructure.json","reports/haizan-pilot-2026-09-05/pilot-record.json","reports/haizan-pilot-2026-09-05/production-after-quality.json","reports/haizan-pilot-2026-09-05/production-pending-review.json","reports/haizan-pilot-2026-09-05/quality-response.json","reports/haizan-pilot-2026-09-05/quality-v2-response.json","reports/haizan-pilot-2026-09-05/revision-v2-response.json","reports/haizan-pilot-2026-09-05/submit-response.json","reports/main-submission-2026-09-05.md","reports/minimax-h3-2026-09-05/README.md","reports/minimax-runtime-recovery-2026-09-05.md","reports/platform-admin-2026-09-05/admin-desktop.png","reports/platform-admin-2026-09-05/admin-mobile.png","reports/platform-admin-2026-09-05/model-api-key-saved.png","reports/platform-admin-2026-09-05/model-credential-error.desktop.png","reports/platform-admin-2026-09-05/model-credential-error.mobile.png","reports/platform-admin-2026-09-05/ui-acceptance.desktop.png","reports/platform-admin-2026-09-05/ui-acceptance.json","reports/platform-admin-2026-09-05/ui-acceptance.mobile.png","reports/platform-admin-2026-09-05/ui-acceptance.production.png","reports/product-design-review-2026-09-05/01-entry.png","reports/product-design-review-2026-09-05/02-brand-home.png","reports/product-design-review-2026-09-05/03-template-edit.png","reports/product-design-review-2026-09-05/04-production.png","reports/product-design-review-2026-09-05/05-production-brief.png","reports/product-design-review-2026-09-05/06-review.png","reports/product-design-review-2026-09-05/07-delivery.png","reports/product-design-review-2026-09-05/README.md","reports/product-ux-fixes-2026-09-05/README.md","reports/product-ux-fixes-2026-09-05/admin-desktop.png","reports/product-ux-fixes-2026-09-05/admin-mobile.png","reports/product-ux-fixes-2026-09-05/final-verification.json","reports/product-ux-fixes-2026-09-05/live-edit.png","reports/product-ux-fixes-2026-09-05/live-home.png","reports/product-ux-fixes-2026-09-05/model-api-key-saved.png","reports/product-ux-fixes-2026-09-05/model-credential-error.desktop.png","reports/product-ux-fixes-2026-09-05/model-credential-error.mobile.png","reports/product-ux-fixes-2026-09-05/ui-acceptance.desktop.png","reports/product-ux-fixes-2026-09-05/ui-acceptance.latest.json","reports/product-ux-fixes-2026-09-05/ui-acceptance.mobile.png","reports/product-ux-fixes-2026-09-05/ui-acceptance.production.png","reports/product-ux-fixes-2026-09-05/ux-edit.desktop.png","reports/product-ux-fixes-2026-09-05/ux-home.desktop.png","reports/product-ux-fixes-2026-09-05/ux-home.mobile.png","reports/product-ux-fixes-2026-09-05/ux-intake.desktop.png","reports/project-deep-analysis-2026-09-05.md","reports/script-integration-audit-2026-09-05/README.md","reports/script-integration-audit-2026-09-05/probe.py","reports/script-integration-audit-2026-09-05/runtime-evidence.json","reports/script-integration-audit-2026-09-05/verification.json","reports/storyboard-import-2026-09-05/README.md","reports/storyboard-import-2026-09-05/model-generation.md","reports/storyboard-import-2026-09-05/saved-project.json","reports/storyboard-refinement-2026-09-05/README.md","reports/storyboard-visual-assets-2026-09-05/README.md","reports/storyboard-visual-assets-2026-09-05/saved-project.json","reports/text-edit-verification-2026-09-05/README.md","reports/text-edit-verification-2026-09-05/browser.json","reports/text-edit-verification-2026-09-05/failed.desktop.png","reports/text-edit-verification-2026-09-05/fields.mobile.png","reports/text-edit-verification-2026-09-05/ocr-existing-local.json","reports/text-edit-verification-2026-09-05/ocr-runtime.json","reports/text-edit-verification-2026-09-05/runtime-contract-rejection.json","reports/text-edit-verification-2026-09-05/runtime.json","reports/text-edit-verification-2026-09-05/verification.json","reports/text-edit-verification-2026-09-05/verification.mobile.png","reports/verified-creative-breakpoint-2026-09-05/README.md","reports/verified-creative-breakpoint-2026-09-05/adversarial-acceptance-audit.latest.md","reports/verified-creative-breakpoint-2026-09-05/baseline.json","reports/verified-creative-breakpoint-2026-09-05/governance.latest.json","reports/verified-creative-breakpoint-2026-09-05/inference-acceptance.latest.json","reports/verified-creative-breakpoint-2026-09-05/production-acceptance.latest.json","reports/verified-creative-breakpoint-2026-09-05/public-file-acceptance.latest.json","reports/verified-creative-breakpoint-2026-09-05/runtime-acceptance.latest.json","reports/verified-creative-breakpoint-2026-09-05/runtime-prior-failure.json","reports/verified-creative-breakpoint-2026-09-05/script-acceptance.latest.json","reports/verified-creative-breakpoint-2026-09-05/source.tar.gz","reports/verified-creative-breakpoint-2026-09-05/source.tar.gz.sha256","reports/verified-creative-breakpoint-2026-09-05/ui-acceptance.desktop.png","reports/verified-creative-breakpoint-2026-09-05/ui-acceptance.draft-import.png","reports/verified-creative-breakpoint-2026-09-05/ui-acceptance.latest.json","reports/verified-creative-breakpoint-2026-09-05/ui-acceptance.mobile.png","reports/verified-creative-breakpoint-2026-09-05/ui-acceptance.production.png","scripts/api-error-message.test.mjs","scripts/check-pilot-infrastructure.mjs","scripts/clamav-supervisor.test.mjs","scripts/job-recovery.test.mjs","scripts/lib/prd-ui-acceptance.mjs","scripts/lib/source-fingerprint.test.mjs","scripts/material-download.test.mjs","scripts/repair-image-source-provenance.mjs","scripts/storyboard-contact-sheet.test.mjs","scripts/storyboard-visual-assets.test.mjs","scripts/video-shot-progress.test.mjs","services/model-sidecar/minimax_video.py","services/model-sidecar/test_deepseek.py","services/model-sidecar/test_minimax_video.py","services/model-sidecar/test_text_edit.py","services/model-sidecar/text_edit.py"],"removed":["apps/web/src/components/material-factory/ModelConnectionsStudio.tsx","apps/web/src/components/material-factory/ModelOperationsDashboard.tsx"],"modified":[".gitignore","CLAUDE.md","README.md","apps/api-fastify/.env.example","apps/api-fastify/prisma/schema.prisma","apps/api-fastify/src/creative-worker.ts","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-factory/shooting-script.service.ts","apps/api-fastify/src/modules/material-production/material-production.service.ts","apps/api-fastify/src/modules/material-production/runtime-trust.ts","apps/api-fastify/src/routes/creative-project.ts","apps/api-fastify/src/routes/material-factory.ts","apps/api-fastify/test/creative-project.integration.test.ts","apps/api-fastify/test/material-runtime-trust.test.ts","apps/api-fastify/test/model-connector.client.test.ts","apps/api-nestjs/.env.example","apps/api-nestjs/prisma/schema.prisma","apps/api-nestjs/src/common/material-runtime.guard.ts","apps/api-nestjs/src/creative-project/creative-project.controller.ts","apps/api-nestjs/src/creative-project/creative-project.service.ts","apps/api-nestjs/src/creative-worker.ts","apps/api-nestjs/src/material-factory/material-factory.controller.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-factory/shooting-script.service.ts","apps/api-nestjs/src/material-production/job-intent-dispatcher.service.ts","apps/api-nestjs/src/material-production/material-production.service.ts","apps/api-nestjs/test/creative-project.integration.test.ts","apps/api-nestjs/test/material-runtime-guard.test.ts","apps/api-nestjs/test/model-connector.client.test.ts","apps/web/next.config.ts","apps/web/src/app/api/[...path]/route.ts","apps/web/src/components/material-factory/BrandHub.tsx","apps/web/src/components/material-factory/CreateStudio.tsx","apps/web/src/components/material-factory/CreativeProjectBar.tsx","apps/web/src/components/material-factory/DeliveryCenter.tsx","apps/web/src/components/material-factory/EditStudio.tsx","apps/web/src/components/material-factory/ExportModal.tsx","apps/web/src/components/material-factory/FactoryShell.tsx","apps/web/src/components/material-factory/InpaintStudio.tsx","apps/web/src/components/material-factory/InstanceGallery.tsx","apps/web/src/components/material-factory/LandingGate.tsx","apps/web/src/components/material-factory/MasterCanvas.tsx","apps/web/src/components/material-factory/PipelineFlow.tsx","apps/web/src/components/material-factory/ProductionDetail.tsx","apps/web/src/components/material-factory/ReviewCenter.tsx","apps/web/src/components/material-factory/RoleConfirmPanel.tsx","apps/web/src/components/material-factory/ScriptStudio.tsx","apps/web/src/components/material-factory/StoryboardStudio.tsx","apps/web/src/components/material-factory/TaskCenter.tsx","apps/web/src/components/material-factory/TemplateStudio.tsx","apps/web/src/components/material-factory/VideoStudio.tsx","apps/web/src/components/material-factory/job-recovery.ts","apps/web/src/components/material-factory/model-catalog.tsx","apps/web/src/components/material-factory/queries.ts","apps/web/src/components/material-factory/storyboard-director.ts","apps/web/src/components/material-factory/ui.tsx","apps/web/src/lib/api.ts","apps/web/src/store/useCreationPrefsStore.ts","apps/web/src/store/useFactoryStore.ts","apps/web/tsconfig.json","deploy/vm/.env.example","deploy/vm/deploy.sh","deploy/vm/docker-compose.yml","deploy/vm/sidecar.Dockerfile","docs/README.md","docs/adr/0010-controlled-ai-material-factory.md","docs/adr/0011-consume-enterprise-idp-access-tokens.md","docs/adr/0012-model-execution-routing-and-catalog.md","docs/adr/0016-durable-creative-projects.md","docs/browser-enterprise-login.md","docs/deploy-vm.md","docs/domain-glossary.md","docs/domain/material-production-blueprint.md","docs/domain/owner-matrix.md","docs/model-credentials.md","docs/product/controlled-ai-material-factory.md","docs/product/creative-pipeline-design.md","docs/product/creative-workflow-analysis.md","docs/standards/backend-standard.md","docs/standards/frontend-standard.md","packages/contracts/src/creative-project.ts","packages/contracts/src/creative-queue-policy.ts","packages/contracts/src/index.ts","packages/contracts/src/material.ts","packages/contracts/src/production.ts","packages/contracts/src/script-to-storyboard.test.ts","packages/contracts/src/script-to-storyboard.ts","packages/contracts/src/script.ts","packages/contracts/src/storyboard-llm.test.ts","packages/contracts/src/storyboard-llm.ts","packages/contracts/src/storyboard.ts","packages/contracts/src/video-capability.ts","packages/enterprise-identity/src/browser-session.ts","reports/contract-consumers.latest.json","reports/creative-breakpoint-fix-2026-09-05.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/validation-source.latest.json","scripts/check-production-security.mjs","scripts/check-ui-acceptance.mjs","scripts/lib/source-fingerprint.mjs","services/model-sidecar/main.py","services/model-sidecar/test_mask_composite.py"]},"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":70880,"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":5,"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-05T12:34:35+08:00","archived_at":"1970-01-01T08:00:00+08:00","permissions":{"admin":true,"push":true,"pull":true},"has_code":true,"has_issues":true,"internal_tracker":{"enable_time_tracker":true,"allow_only_contributors_to_track_time":true,"enable_issue_dependencies":true},"has_wiki":true,"has_pull_requests":true,"has_projects":true,"projects_mode":"all","has_releases":true,"has_packages":true,"has_actions":true,"ignore_whitespace_conflicts":false,"allow_merge_commits":true,"allow_rebase":true,"allow_rebase_explicit":true,"allow_squash_merge":true,"allow_fast_forward_only_merge":true,"allow_rebase_update":true,"allow_manual_merge":false,"autodetect_manual_merge":false,"default_delete_branch_after_merge":false,"default_merge_style":"merge","default_allow_maintainer_edit":true,"avatar_url":"","internal":false,"mirror_interval":"","object_format_name":"sha1","mirror_updated":"0001-01-01T00:00:00Z","topics":[],"licenses":[]},"pusher":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"sender":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"}}...
|
push
|
2
|
4
|
1788618931
|
1788619022
|
0
|
1788618931
|
1788619022
|
group: governance-${{ github.workflow }}-${{ githu group: governance-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: "true"
...
|
governance-governance.yml-refs/heads/main
|
1
|
Edit
Delete
|
|
23642
|
fix: 完成内容恢复与分镜验收修复并归档本机部署证据
|
57
|
5
|
governance.yml
|
14
|
5
|
0
|
refs/heads/main
|
aa468b36029aea0cd0c2011527f68c3c09a39332
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"5d1fb824260721f7fbd8bed2f58fb239d5f77f13","after":"aa468b36029aea0cd0c2011527f68c3c09a39332","compare_url":"https://gitea.g-hi.com/luoanwu/image-generation/compare/5d1fb824260721f7fbd8bed2f58fb239d5f77f13...aa468b36029aea0cd0c2011527f68c3c09a39332","commits":[{"id":"aa468b36029aea0cd0c2011527f68c3c09a39332","message":"fix: 完成内容恢复与分镜验收修复并归档本机部署证据\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/aa468b36029aea0cd0c2011527f68c3c09a39332","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-09-05T15:21:08-07:00","added":["reports/admin-mobile.png","reports/prd-retry.mobile.png","reports/prd-review.desktop.png","reports/repair-deploy-2026-09-05/README.md","reports/repair-deploy-2026-09-05/api-fastify-release.log","reports/repair-deploy-2026-09-05/api-nestjs-release.log","reports/repair-deploy-2026-09-05/browser.log","reports/repair-deploy-2026-09-05/candidate-smoke.json","reports/repair-deploy-2026-09-05/cleanup.json","reports/repair-deploy-2026-09-05/cutover.json","reports/repair-deploy-2026-09-05/cutover.log","reports/repair-deploy-2026-09-05/deployed-1440.png","reports/repair-deploy-2026-09-05/deployed-390.png","reports/repair-deploy-2026-09-05/deployed-api-smoke.json","reports/repair-deploy-2026-09-05/deployed-browser.json","reports/repair-deploy-2026-09-05/deployed-services.json","reports/repair-deploy-2026-09-05/hi-atelier-creative-worker-1.log","reports/repair-deploy-2026-09-05/hi-atelier-production-worker-1.log","reports/repair-deploy-2026-09-05/image-source-verification.json","reports/repair-deploy-2026-09-05/image.log","reports/repair-deploy-2026-09-05/inference.log","reports/repair-deploy-2026-09-05/initialization-failure/inference-acceptance.latest.json","reports/repair-deploy-2026-09-05/initialization-failure/inference.log","reports/repair-deploy-2026-09-05/initialization-failure/production-acceptance.latest.json","reports/repair-deploy-2026-09-05/initialization-failure/production.log","reports/repair-deploy-2026-09-05/initialization-failure/public-file-acceptance.latest.json","reports/repair-deploy-2026-09-05/initialization-failure/public-file-acceptance.log","reports/repair-deploy-2026-09-05/initialization-failure/runtime-acceptance.latest.json","reports/repair-deploy-2026-09-05/initialization-failure/runtime.log","reports/repair-deploy-2026-09-05/initialization-failure/script-acceptance.latest.json","reports/repair-deploy-2026-09-05/initialization-failure/script.log","reports/repair-deploy-2026-09-05/initialization-failure/ui-acceptance.latest.json","reports/repair-deploy-2026-09-05/initialization-failure/ui.log","reports/repair-deploy-2026-09-05/model-inventory.json","reports/repair-deploy-2026-09-05/model-inventory.log","reports/repair-deploy-2026-09-05/online-model-readiness.json","reports/repair-deploy-2026-09-05/production.log","reports/repair-deploy-2026-09-05/public-file-acceptance.log","reports/repair-deploy-2026-09-05/quality.log","reports/repair-deploy-2026-09-05/release-summary.json","reports/repair-deploy-2026-09-05/runtime.log","reports/repair-deploy-2026-09-05/script.log","reports/repair-deploy-2026-09-05/sidecar-tests.log","reports/repair-deploy-2026-09-05/source-verification.log","reports/repair-deploy-2026-09-05/static-check.log","reports/repair-deploy-2026-09-05/ui.log","reports/ux-home.mobile.png","reports/ux-intake.desktop.png","scripts/lib/storyboard-ui-fixture.mjs"],"removed":[],"modified":["CLAUDE.md","apps/web/src/components/material-factory/CreativeProjectBar.tsx","deploy/vm/Dockerfile","reports/admin-desktop.png","reports/adversarial-acceptance-audit.latest.md","reports/content-detail.output-desktop.png","reports/contract-consumers.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/storyboard-director-guard.latest.json","reports/ui-acceptance.desktop.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/validation-source.latest.json","scripts/check-ui-acceptance.mjs"]},{"id":"4004691c0c44b320cfaae3c9b083067e7d09054c","message":"test: 归档完整验收与对抗探针原始日志\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/4004691c0c44b320cfaae3c9b083067e7d09054c","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-09-05T14:40:42-07:00","added":["reports/adversarial-audit-2026-09-05/api-fastify-green.log","reports/adversarial-audit-2026-09-05/api-fastify-red.log","reports/adversarial-audit-2026-09-05/api-nestjs-green.log","reports/adversarial-audit-2026-09-05/api-nestjs-red.log","reports/adversarial-audit-2026-09-05/inference.log","reports/adversarial-audit-2026-09-05/models.log","reports/adversarial-audit-2026-09-05/post-cleanup-health.log","reports/adversarial-audit-2026-09-05/production.log","reports/adversarial-audit-2026-09-05/public-file-acceptance.log","reports/adversarial-audit-2026-09-05/quality.log","reports/adversarial-audit-2026-09-05/runner-regressions.log","reports/adversarial-audit-2026-09-05/runtime.log","reports/adversarial-audit-2026-09-05/script.log","reports/adversarial-audit-2026-09-05/sidecar-tests.log","reports/adversarial-audit-2026-09-05/source-verification.log","reports/adversarial-audit-2026-09-05/static-before-report-refresh.log","reports/adversarial-audit-2026-09-05/static-final.log","reports/adversarial-audit-2026-09-05/ui.log","reports/full-audit-2026-09-05/build.log","reports/full-audit-2026-09-05/inference.log","reports/full-audit-2026-09-05/models.log","reports/full-audit-2026-09-05/production.log","reports/full-audit-2026-09-05/public-file-acceptance.log","reports/full-audit-2026-09-05/quality-final.log","reports/full-audit-2026-09-05/quality.log","reports/full-audit-2026-09-05/regressions.log","reports/full-audit-2026-09-05/runtime.log","reports/full-audit-2026-09-05/script.log","reports/full-audit-2026-09-05/sidecar-tests.log","reports/full-audit-2026-09-05/startup.log","reports/full-audit-2026-09-05/static-final.log","reports/full-audit-2026-09-05/static.log","reports/full-audit-2026-09-05/ui.log"],"removed":[],"modified":[]},{"id":"013d2f803fce3903b2415f8e6a3ae2edd0ee54ad","message":"feat: 完善 PC/手机内容工作台并加固对抗验收\n\n接入桌面与手机应用壳,完善内容九步菜单、详情页、保存采用与输出体验,并收纳完整设计原型与验收证据。\n\n双后端修复配图复核字段污染、冻结成稿类型漏检和配图幂等来源漏检;六类验收绑定起始源码并检查结束指纹,禁止环境变量替换验收指纹。\n\n验证:双后端专项 39/34 通过,五类后端验收、内容九步响应式 UI 和静态检查通过。整站 UI 旧分镜用例仍失败,模型盘点 5/8 就绪,发布状态保持 OPEN;未部署运行容器。\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/013d2f803fce3903b2415f8e6a3ae2edd0ee54ad","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-09-05T14:39:53-07:00","added":["apps/web/src/components/material-factory/ContentStepNav.tsx","apps/web/src/components/material-factory/factory-shell.module.css","apps/web/src/components/material-factory/workspace-home.module.css","docs/design/full-uiux-2026-09-05/01-information-architecture.md","docs/design/full-uiux-2026-09-05/02-interaction-spec.md","docs/design/full-uiux-2026-09-05/03-design-system.md","docs/design/full-uiux-2026-09-05/04-page-blueprints.md","docs/design/full-uiux-2026-09-05/05-visual-concepts.md","docs/design/full-uiux-2026-09-05/06-mobile-app-architecture.md","docs/design/full-uiux-2026-09-05/07-mobile-app-interactions.md","docs/design/full-uiux-2026-09-05/08-mobile-visual-concepts.md","docs/design/full-uiux-2026-09-05/09-real-project-integration.md","docs/design/full-uiux-2026-09-05/10-content-step-details.md","docs/design/full-uiux-2026-09-05/README.md","docs/design/full-uiux-2026-09-05/concepts-manifest.json","docs/design/full-uiux-2026-09-05/concepts/01-workspace-editorial.png","docs/design/full-uiux-2026-09-05/concepts/02-workspace-project.png","docs/design/full-uiux-2026-09-05/concepts/03-workspace-tasks.png","docs/design/full-uiux-2026-09-05/design-validation.json","docs/design/full-uiux-2026-09-05/mobile-concepts-manifest.json","docs/design/full-uiux-2026-09-05/mobile-concepts/01-mobile-workspace.png","docs/design/full-uiux-2026-09-05/mobile-concepts/02-mobile-create.png","docs/design/full-uiux-2026-09-05/mobile-concepts/03-mobile-tasks.png","docs/design/full-uiux-2026-09-05/mobile-prompts.md","output/uiux-prototype-20260905/.gitignore","output/uiux-prototype-20260905/.npmrc","output/uiux-prototype-20260905/.openai/hosting.json","output/uiux-prototype-20260905/AGENTS.md","output/uiux-prototype-20260905/README.md","output/uiux-prototype-20260905/design-qa.md","output/uiux-prototype-20260905/desktop.config.ts","output/uiux-prototype-20260905/desktop.html","output/uiux-prototype-20260905/dist-desktop/assets/android/Keyboard.png","output/uiux-prototype-20260905/dist-desktop/assets/android/Pixel10.png","output/uiux-prototype-20260905/dist-desktop/assets/android/navigation-bar.svg","output/uiux-prototype-20260905/dist-desktop/assets/desktop-BjV2Vpbn.js","output/uiux-prototype-20260905/dist-desktop/assets/desktop-CCqGD-YV.css","output/uiux-prototype-20260905/dist-desktop/assets/iphone/Bezel.png","output/uiux-prototype-20260905/dist-desktop/assets/iphone/Keyboard.png","output/uiux-prototype-20260905/dist-desktop/assets/status/ios-status-icons.svg","output/uiux-prototype-20260905/dist-desktop/assets/status/status-icons.svg","output/uiux-prototype-20260905/dist-desktop/desktop.html","output/uiux-prototype-20260905/dist-desktop/gallery.html","output/uiux-prototype-20260905/dist-desktop/media/autumn.png","output/uiux-prototype-20260905/dist-desktop/media/city.png","output/uiux-prototype-20260905/dist-desktop/media/concert-thumb.png","output/uiux-prototype-20260905/dist-desktop/media/concert.png","output/uiux-prototype-20260905/dist-desktop/media/editorial-thumb.png","output/uiux-prototype-20260905/dist-desktop/media/editorial.png","output/uiux-prototype-20260905/dist-desktop/media/hi-mark.png","output/uiux-prototype-20260905/dist-desktop/media/preview.mp4","output/uiux-prototype-20260905/dist-desktop/screens/desktop-admin.png","output/uiux-prototype-20260905/dist-desktop/screens/desktop-brand.png","output/uiux-prototype-20260905/dist-desktop/screens/desktop-content.png","output/uiux-prototype-20260905/dist-desktop/screens/desktop-create.png","output/uiux-prototype-20260905/dist-desktop/screens/desktop-deliveries.png","output/uiux-prototype-20260905/dist-desktop/screens/desktop-edit.png","output/uiux-prototype-20260905/dist-desktop/screens/desktop-events.png","output/uiux-prototype-20260905/dist-desktop/screens/desktop-gallery.png","output/uiux-prototype-20260905/dist-desktop/screens/desktop-home.png","output/uiux-prototype-20260905/dist-desktop/screens/desktop-inpaint.png","output/uiux-prototype-20260905/dist-desktop/screens/desktop-login.png","output/uiux-prototype-20260905/dist-desktop/screens/desktop-operations.png","output/uiux-prototype-20260905/dist-desktop/screens/desktop-overview.png","output/uiux-prototype-20260905/dist-desktop/screens/desktop-reviews.png","output/uiux-prototype-20260905/dist-desktop/screens/desktop-script.png","output/uiux-prototype-20260905/dist-desktop/screens/desktop-storyboard.png","output/uiux-prototype-20260905/dist-desktop/screens/desktop-tasks.png","output/uiux-prototype-20260905/dist-desktop/screens/desktop-templates.png","output/uiux-prototype-20260905/dist-desktop/screens/desktop-video.png","output/uiux-prototype-20260905/dist-desktop/screens/mobile-admin.png","output/uiux-prototype-20260905/dist-desktop/screens/mobile-brand.png","output/uiux-prototype-20260905/dist-desktop/screens/mobile-content.png","output/uiux-prototype-20260905/dist-desktop/screens/mobile-create.png","output/uiux-prototype-20260905/dist-desktop/screens/mobile-deliveries.png","output/uiux-prototype-20260905/dist-desktop/screens/mobile-edit.png","output/uiux-prototype-20260905/dist-desktop/screens/mobile-events.png","output/uiux-prototype-20260905/dist-desktop/screens/mobile-gallery.png","output/uiux-prototype-20260905/dist-desktop/screens/mobile-home.png","output/uiux-prototype-20260905/dist-desktop/screens/mobile-inpaint.png","output/uiux-prototype-20260905/dist-desktop/screens/mobile-login.png","output/uiux-prototype-20260905/dist-desktop/screens/mobile-operations.png","output/uiux-prototype-20260905/dist-desktop/screens/mobile-overview.png","output/uiux-prototype-20260905/dist-desktop/screens/mobile-reviews.png","output/uiux-prototype-20260905/dist-desktop/screens/mobile-script.png","output/uiux-prototype-20260905/dist-desktop/screens/mobile-storyboard.png","output/uiux-prototype-20260905/dist-desktop/screens/mobile-tasks.png","output/uiux-prototype-20260905/dist-desktop/screens/mobile-templates.png","output/uiux-prototype-20260905/dist-desktop/screens/mobile-video.png","output/uiux-prototype-20260905/docs/interaction-guide.md","output/uiux-prototype-20260905/index.html","output/uiux-prototype-20260905/mobile-runtime.lock.json","output/uiux-prototype-20260905/package-lock.json","output/uiux-prototype-20260905/package.json","output/uiux-prototype-20260905/page-manifest.json","output/uiux-prototype-20260905/playwright.config.ts","output/uiux-prototype-20260905/public/assets/android/Keyboard.png","output/uiux-prototype-20260905/public/assets/android/Pixel10.png","output/uiux-prototype-20260905/public/assets/android/navigation-bar.svg","output/uiux-prototype-20260905/public/assets/iphone/Bezel.png","output/uiux-prototype-20260905/public/assets/iphone/Keyboard.png","output/uiux-prototype-20260905/public/assets/status/ios-status-icons.svg","output/uiux-prototype-20260905/public/assets/status/status-icons.svg","output/uiux-prototype-20260905/public/gallery.html","output/uiux-prototype-20260905/public/media/autumn.png","output/uiux-prototype-20260905/public/media/city.png","output/uiux-prototype-20260905/public/media/concert-thumb.png","output/uiux-prototype-20260905/public/media/concert.png","output/uiux-prototype-20260905/public/media/editorial-thumb.png","output/uiux-prototype-20260905/public/media/editorial.png","output/uiux-prototype-20260905/public/media/hi-mark.png","output/uiux-prototype-20260905/public/media/preview.mp4","output/uiux-prototype-20260905/public/screens/desktop-admin.png","output/uiux-prototype-20260905/public/screens/desktop-brand.png","output/uiux-prototype-20260905/public/screens/desktop-content.png","output/uiux-prototype-20260905/public/screens/desktop-create.png","output/uiux-prototype-20260905/public/screens/desktop-deliveries.png","output/uiux-prototype-20260905/public/screens/desktop-edit.png","output/uiux-prototype-20260905/public/screens/desktop-events.png","output/uiux-prototype-20260905/public/screens/desktop-gallery.png","output/uiux-prototype-20260905/public/screens/desktop-home.png","output/uiux-prototype-20260905/public/screens/desktop-inpaint.png","output/uiux-prototype-20260905/public/screens/desktop-login.png","output/uiux-prototype-20260905/public/screens/desktop-operations.png","output/uiux-prototype-20260905/public/screens/desktop-overview.png","output/uiux-prototype-20260905/public/screens/desktop-reviews.png","output/uiux-prototype-20260905/public/screens/desktop-script.png","output/uiux-prototype-20260905/public/screens/desktop-storyboard.png","output/uiux-prototype-20260905/public/screens/desktop-tasks.png","output/uiux-prototype-20260905/public/screens/desktop-templates.png","output/uiux-prototype-20260905/public/screens/desktop-video.png","output/uiux-prototype-20260905/public/screens/mobile-admin.png","output/uiux-prototype-20260905/public/screens/mobile-brand.png","output/uiux-prototype-20260905/public/screens/mobile-content.png","output/uiux-prototype-20260905/public/screens/mobile-create.png","output/uiux-prototype-20260905/public/screens/mobile-deliveries.png","output/uiux-prototype-20260905/public/screens/mobile-edit.png","output/uiux-prototype-20260905/public/screens/mobile-events.png","output/uiux-prototype-20260905/public/screens/mobile-gallery.png","output/uiux-prototype-20260905/public/screens/mobile-home.png","output/uiux-prototype-20260905/public/screens/mobile-inpaint.png","output/uiux-prototype-20260905/public/screens/mobile-login.png","output/uiux-prototype-20260905/public/screens/mobile-operations.png","output/uiux-prototype-20260905/public/screens/mobile-overview.png","output/uiux-prototype-20260905/public/screens/mobile-reviews.png","output/uiux-prototype-20260905/public/screens/mobile-script.png","output/uiux-prototype-20260905/public/screens/mobile-storyboard.png","output/uiux-prototype-20260905/public/screens/mobile-tasks.png","output/uiux-prototype-20260905/public/screens/mobile-templates.png","output/uiux-prototype-20260905/public/screens/mobile-video.png","output/uiux-prototype-20260905/qa/compare.py","output/uiux-prototype-20260905/qa/comparison-desktop-detail.png","output/uiux-prototype-20260905/qa/comparison-desktop.png","output/uiux-prototype-20260905/qa/comparison-mobile.png","output/uiux-prototype-20260905/qa/desktop-audit.json","output/uiux-prototype-20260905/qa/desktop-home.png","output/uiux-prototype-20260905/qa/desktop-overview.png","output/uiux-prototype-20260905/qa/desktop/admin.png","output/uiux-prototype-20260905/qa/desktop/brand.png","output/uiux-prototype-20260905/qa/desktop/content.png","output/uiux-prototype-20260905/qa/desktop/create.png","output/uiux-prototype-20260905/qa/desktop/deliveries.png","output/uiux-prototype-20260905/qa/desktop/edit.png","output/uiux-prototype-20260905/qa/desktop/events.png","output/uiux-prototype-20260905/qa/desktop/gallery.png","output/uiux-prototype-20260905/qa/desktop/home.png","output/uiux-prototype-20260905/qa/desktop/inpaint.png","output/uiux-prototype-20260905/qa/desktop/login.png","output/uiux-prototype-20260905/qa/desktop/operations.png","output/uiux-prototype-20260905/qa/desktop/reviews.png","output/uiux-prototype-20260905/qa/desktop/script.png","output/uiux-prototype-20260905/qa/desktop/storyboard.png","output/uiux-prototype-20260905/qa/desktop/tasks.png","output/uiux-prototype-20260905/qa/desktop/templates.png","output/uiux-prototype-20260905/qa/desktop/video.png","output/uiux-prototype-20260905/qa/focused.py","output/uiux-prototype-20260905/qa/make-gallery.py","output/uiux-prototype-20260905/qa/mobile-audit.json","output/uiux-prototype-20260905/qa/mobile-full.png","output/uiux-prototype-20260905/qa/mobile-home.png","output/uiux-prototype-20260905/qa/mobile-keyboard-fixed.png","output/uiux-prototype-20260905/qa/mobile-keyboard.png","output/uiux-prototype-20260905/qa/mobile-overview.png","output/uiux-prototype-20260905/qa/mobile/admin-full.png","output/uiux-prototype-20260905/qa/mobile/admin.png","output/uiux-prototype-20260905/qa/mobile/brand-full.png","output/uiux-prototype-20260905/qa/mobile/brand.png","output/uiux-prototype-20260905/qa/mobile/content-full.png","output/uiux-prototype-20260905/qa/mobile/content.png","output/uiux-prototype-20260905/qa/mobile/create-full.png","output/uiux-prototype-20260905/qa/mobile/create.png","output/uiux-prototype-20260905/qa/mobile/deliveries-full.png","output/uiux-prototype-20260905/qa/mobile/deliveries.png","output/uiux-prototype-20260905/qa/mobile/edit-full.png","output/uiux-prototype-20260905/qa/mobile/edit.png","output/uiux-prototype-20260905/qa/mobile/events-full.png","output/uiux-prototype-20260905/qa/mobile/events.png","output/uiux-prototype-20260905/qa/mobile/gallery-full.png","output/uiux-prototype-20260905/qa/mobile/gallery.png","output/uiux-prototype-20260905/qa/mobile/home-full.png","output/uiux-prototype-20260905/qa/mobile/home.png","output/uiux-prototype-20260905/qa/mobile/inpaint-full.png","output/uiux-prototype-20260905/qa/mobile/inpaint.png","output/uiux-prototype-20260905/qa/mobile/login-full.png","output/uiux-prototype-20260905/qa/mobile/login.png","output/uiux-prototype-20260905/qa/mobile/operations-full.png","output/uiux-prototype-20260905/qa/mobile/operations.png","output/uiux-prototype-20260905/qa/mobile/reviews-full.png","output/uiux-prototype-20260905/qa/mobile/reviews.png","output/uiux-prototype-20260905/qa/mobile/script-full.png","output/uiux-prototype-20260905/qa/mobile/script.png","output/uiux-prototype-20260905/qa/mobile/storyboard-full.png","output/uiux-prototype-20260905/qa/mobile/storyboard.png","output/uiux-prototype-20260905/qa/mobile/tasks-full.png","output/uiux-prototype-20260905/qa/mobile/tasks.png","output/uiux-prototype-20260905/qa/mobile/templates-full.png","output/uiux-prototype-20260905/qa/mobile/templates.png","output/uiux-prototype-20260905/qa/mobile/video-full.png","output/uiux-prototype-20260905/qa/mobile/video.png","output/uiux-prototype-20260905/qa/pixel-home.png","output/uiux-prototype-20260905/qa/pixel-keyboard.png","output/uiux-prototype-20260905/qa/video-playing.png","output/uiux-prototype-20260905/scripts/check-mobile-runtime.mjs","output/uiux-prototype-20260905/scripts/merge-build.mjs","output/uiux-prototype-20260905/scripts/prepare-sites-build.mjs","output/uiux-prototype-20260905/scripts/update-mobile-runtime-lock.mjs","output/uiux-prototype-20260905/src/App.tsx","output/uiux-prototype-20260905/src/Desktop.tsx","output/uiux-prototype-20260905/src/Prototype.tsx","output/uiux-prototype-20260905/src/desktop-main.tsx","output/uiux-prototype-20260905/src/main.tsx","output/uiux-prototype-20260905/src/mobile/BottomSheet.tsx","output/uiux-prototype-20260905/src/mobile/COMPONENTS.md","output/uiux-prototype-20260905/src/mobile/Carousel.tsx","output/uiux-prototype-20260905/src/mobile/Device.tsx","output/uiux-prototype-20260905/src/mobile/FlowStack.tsx","output/uiux-prototype-20260905/src/mobile/Keyboard.tsx","output/uiux-prototype-20260905/src/mobile/MobileCursor.tsx","output/uiux-prototype-20260905/src/mobile/MobileRuntime.tsx","output/uiux-prototype-20260905/src/mobile/MobileScroll.tsx","output/uiux-prototype-20260905/src/mobile/PhoneFrame.tsx","output/uiux-prototype-20260905/src/mobile/assets.ts","output/uiux-prototype-20260905/src/mobile/components.tsx","output/uiux-prototype-20260905/src/mobile/geometry.ts","output/uiux-prototype-20260905/src/mobile/index.ts","output/uiux-prototype-20260905/src/prototype.css","output/uiux-prototype-20260905/src/studio/CreationScreens.tsx","output/uiux-prototype-20260905/src/studio/Home.tsx","output/uiux-prototype-20260905/src/studio/ManagementScreens.tsx","output/uiux-prototype-20260905/src/studio/creation.css","output/uiux-prototype-20260905/src/studio/management.css","output/uiux-prototype-20260905/src/studio/shared.tsx","output/uiux-prototype-20260905/src/styles.css","output/uiux-prototype-20260905/src/vite-env.d.ts","output/uiux-prototype-20260905/tests/mobile-runtime.spec.ts","output/uiux-prototype-20260905/tests/runtime-fixture.css","output/uiux-prototype-20260905/tests/runtime-fixture.html","output/uiux-prototype-20260905/tests/runtime-fixture.tsx","output/uiux-prototype-20260905/tests/sites-worker.test.mjs","output/uiux-prototype-20260905/tsconfig.json","output/uiux-prototype-20260905/vite.config.ts","output/uiux-prototype-20260905/worker/index.js","reports/admin-desktop.png","reports/adversarial-audit-2026-09-05/README.md","reports/adversarial-audit-2026-09-05/cleanup.json","reports/adversarial-audit-2026-09-05/content-detail.brief-desktop.png","reports/adversarial-audit-2026-09-05/content-detail.images-desktop.png","reports/adversarial-audit-2026-09-05/content-detail.output-desktop.png","reports/adversarial-audit-2026-09-05/content-detail.output-mobile.png","reports/adversarial-audit-2026-09-05/content-detail.plans-desktop.png","reports/adversarial-audit-2026-09-05/content-detail.review-desktop.png","reports/adversarial-audit-2026-09-05/deployed-boundary-probes.json","reports/adversarial-audit-2026-09-05/fingerprint-red.json","reports/adversarial-audit-2026-09-05/inference-acceptance.latest.json","reports/adversarial-audit-2026-09-05/material-models.latest.json","reports/adversarial-audit-2026-09-05/production-acceptance.latest.json","reports/adversarial-audit-2026-09-05/public-file-acceptance.latest.json","reports/adversarial-audit-2026-09-05/run-scope.json","reports/adversarial-audit-2026-09-05/runtime-acceptance.latest.json","reports/adversarial-audit-2026-09-05/script-acceptance.latest.json","reports/adversarial-audit-2026-09-05/summary.json","reports/adversarial-audit-2026-09-05/ui-acceptance.latest.json","reports/content-detail.brief-desktop.png","reports/content-detail.failure.png","reports/content-detail.failure.txt","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/content-preview-connection-recovery-2026-09-05.md","reports/full-audit-2026-09-05/README.md","reports/full-audit-2026-09-05/admin-desktop.png","reports/full-audit-2026-09-05/cleanup.json","reports/full-audit-2026-09-05/content-detail.brief-desktop.png","reports/full-audit-2026-09-05/content-detail.images-desktop.png","reports/full-audit-2026-09-05/content-detail.output-desktop.png","reports/full-audit-2026-09-05/content-detail.output-mobile.png","reports/full-audit-2026-09-05/content-detail.plans-desktop.png","reports/full-audit-2026-09-05/content-detail.review-desktop.png","reports/full-audit-2026-09-05/deployed-project-read.json","reports/full-audit-2026-09-05/historical-adversarial.md","reports/full-audit-2026-09-05/inference-acceptance.latest.json","reports/full-audit-2026-09-05/model-api-key-saved.png","reports/full-audit-2026-09-05/model-credential-error.desktop.png","reports/full-audit-2026-09-05/model-credential-error.mobile.png","reports/full-audit-2026-09-05/production-acceptance.latest.json","reports/full-audit-2026-09-05/public-file-acceptance.latest.json","reports/full-audit-2026-09-05/runtime-acceptance.latest.json","reports/full-audit-2026-09-05/scope.md","reports/full-audit-2026-09-05/script-acceptance.latest.json","reports/full-audit-2026-09-05/startup.json","reports/full-audit-2026-09-05/summary.json","reports/full-audit-2026-09-05/ui-acceptance.latest.json","reports/full-audit-2026-09-05/ux-edit.desktop.png","reports/full-audit-2026-09-05/ux-home.desktop.png","reports/model-api-key-saved.png","reports/ux-edit.desktop.png","reports/ux-home.desktop.png","scripts/lib/content-ui-acceptance.mjs","scripts/lib/source-verification.test.mjs"],"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-fastify/test/http.acceptance.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/api-nestjs/test/http.acceptance.test.ts","apps/web/.env.example","apps/web/next.config.ts","apps/web/src/app/globals.css","apps/web/src/app/layout.tsx","apps/web/src/components/admin/admin.module.css","apps/web/src/components/material-factory/ContentStudio.tsx","apps/web/src/components/material-factory/CreativeProjectBar.tsx","apps/web/src/components/material-factory/FactoryShell.tsx","apps/web/src/components/material-factory/PipelineFlow.tsx","apps/web/src/components/material-factory/WorkspaceHome.tsx","apps/web/src/components/material-factory/content-studio.module.css","apps/web/src/lib/providers.tsx","apps/web/tsconfig.json","reports/adversarial-acceptance-audit.latest.md","reports/contract-consumers.latest.json","reports/governance-docs.latest.json","reports/governance.latest.json","reports/inference-acceptance.latest.json","reports/material-models.latest.json","reports/material-review-concurrency-guard.latest.json","reports/migrations.latest.json","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/storyboard-director-guard.latest.json","reports/ui-acceptance.latest.json","reports/validation-source.latest.json","scripts/check-inference-acceptance.mjs","scripts/check-production-acceptance.mjs","scripts/check-public-file-acceptance.mjs","scripts/check-runtime-acceptance.mjs","scripts/check-script-acceptance.mjs","scripts/check-startup-acceptance.mjs","scripts/check-ui-acceptance.mjs","scripts/lib/source-fingerprint.mjs"]}],"total_commits":0,"head_commit":{"id":"aa468b36029aea0cd0c2011527f68c3c09a39332","message":"fix: 完成内容恢复与分镜验收修复并归档本机部署证据\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/aa468b36029aea0cd0c2011527f68c3c09a39332","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-09-05T15:21:08-07:00","added":["reports/admin-mobile.png","reports/prd-retry.mobile.png","reports/prd-review.desktop.png","reports/repair-deploy-2026-09-05/README.md","reports/repair-deploy-2026-09-05/api-fastify-release.log","reports/repair-deploy-2026-09-05/api-nestjs-release.log","reports/repair-deploy-2026-09-05/browser.log","reports/repair-deploy-2026-09-05/candidate-smoke.json","reports/repair-deploy-2026-09-05/cleanup.json","reports/repair-deploy-2026-09-05/cutover.json","reports/repair-deploy-2026-09-05/cutover.log","reports/repair-deploy-2026-09-05/deployed-1440.png","reports/repair-deploy-2026-09-05/deployed-390.png","reports/repair-deploy-2026-09-05/deployed-api-smoke.json","reports/repair-deploy-2026-09-05/deployed-browser.json","reports/repair-deploy-2026-09-05/deployed-services.json","reports/repair-deploy-2026-09-05/hi-atelier-creative-worker-1.log","reports/repair-deploy-2026-09-05/hi-atelier-production-worker-1.log","reports/repair-deploy-2026-09-05/image-source-verification.json","reports/repair-deploy-2026-09-05/image.log","reports/repair-deploy-2026-09-05/inference.log","reports/repair-deploy-2026-09-05/initialization-failure/inference-acceptance.latest.json","reports/repair-deploy-2026-09-05/initialization-failure/inference.log","reports/repair-deploy-2026-09-05/initialization-failure/production-acceptance.latest.json","reports/repair-deploy-2026-09-05/initialization-failure/production.log","reports/repair-deploy-2026-09-05/initialization-failure/public-file-acceptance.latest.json","reports/repair-deploy-2026-09-05/initialization-failure/public-file-acceptance.log","reports/repair-deploy-2026-09-05/initialization-failure/runtime-acceptance.latest.json","reports/repair-deploy-2026-09-05/initialization-failure/runtime.log","reports/repair-deploy-2026-09-05/initialization-failure/script-acceptance.latest.json","reports/repair-deploy-2026-09-05/initialization-failure/script.log","reports/repair-deploy-2026-09-05/initialization-failure/ui-acceptance.latest.json","reports/repair-deploy-2026-09-05/initialization-failure/ui.log","reports/repair-deploy-2026-09-05/model-inventory.json","reports/repair-deploy-2026-09-05/model-inventory.log","reports/repair-deploy-2026-09-05/online-model-readiness.json","reports/repair-deploy-2026-09-05/production.log","reports/repair-deploy-2026-09-05/public-file-acceptance.log","reports/repair-deploy-2026-09-05/quality.log","reports/repair-deploy-2026-09-05/release-summary.json","reports/repair-deploy-2026-09-05/runtime.log","reports/repair-deploy-2026-09-05/script.log","reports/repair-deploy-2026-09-05/sidecar-tests.log","reports/repair-deploy-2026-09-05/source-verification.log","reports/repair-deploy-2026-09-05/static-check.log","reports/repair-deploy-2026-09-05/ui.log","reports/ux-home.mobile.png","reports/ux-intake.desktop.png","scripts/lib/storyboard-ui-fixture.mjs"],"removed":[],"modified":["CLAUDE.md","apps/web/src/components/material-factory/CreativeProjectBar.tsx","deploy/vm/Dockerfile","reports/admin-desktop.png","reports/adversarial-acceptance-audit.latest.md","reports/content-detail.output-desktop.png","reports/contract-consumers.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/storyboard-director-guard.latest.json","reports/ui-acceptance.desktop.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/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":157768,"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":5,"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-05T22:35:31+08:00","archived_at":"1970-01-01T08:00:00+08:00","permissions":{"admin":true,"push":true,"pull":true},"has_code":true,"has_issues":true,"internal_tracker":{"enable_time_tracker":true,"allow_only_contributors_to_track_time":true,"enable_issue_dependencies":true},"has_wiki":true,"has_pull_requests":true,"has_projects":true,"projects_mode":"all","has_releases":true,"has_packages":true,"has_actions":true,"ignore_whitespace_conflicts":false,"allow_merge_commits":true,"allow_rebase":true,"allow_rebase_explicit":true,"allow_squash_merge":true,"allow_fast_forward_only_merge":true,"allow_rebase_update":true,"allow_manual_merge":false,"autodetect_manual_merge":false,"default_delete_branch_after_merge":false,"default_merge_style":"merge","default_allow_maintainer_edit":true,"avatar_url":"","internal":false,"mirror_interval":"","object_format_name":"sha1","mirror_updated":"0001-01-01T00:00:00Z","topics":[],"licenses":[]},"pusher":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"sender":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"}}...
|
push
|
2
|
4
|
1788647140
|
1788647175
|
0
|
1788647138
|
1788647175
|
group: governance-${{ github.workflow }}-${{ githu group: governance-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: "true"
...
|
governance-governance.yml-refs/heads/main
|
1
|
Edit
Delete
|
|
23643
|
docs(marketing): 纳入官网、销售资料、营销海报与品牌配色
|
57
|
5
|
governance.yml
|
15
|
5
|
0
|
refs/heads/main
|
d325551644ebf1c26553289cf0c6807695d4d940
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"aa468b36029aea0cd0c2011527f68c3c09a39332","after":"d325551644ebf1c26553289cf0c6807695d4d940","compare_url":"https://gitea.g-hi.com/luoanwu/image-generation/compare/aa468b36029aea0cd0c2011527f68c3c09a39332...d325551644ebf1c26553289cf0c6807695d4d940","commits":[{"id":"d325551644ebf1c26553289cf0c6807695d4d940","message":"docs(marketing): 纳入官网、销售资料、营销海报与品牌配色\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/d325551644ebf1c26553289cf0c6807695d4d940","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-09-05T18:01:43-07:00","added":["marketing-posters/2026-09-05/capabilities-background.png","marketing-posters/2026-09-05/creative-background.png","marketing-posters/2026-09-05/pilot-background.png","marketing-posters/2026-09-05/产品能力版-制作说明.md","marketing-posters/2026-09-05/制作说明.md","marketing-posters/2026-09-05/嗨创造意-产品宣传海报.html","marketing-posters/2026-09-05/嗨创造意-产品宣传海报.png","marketing-posters/2026-09-05/嗨创造意-产品能力海报.html","marketing-posters/2026-09-05/嗨创造意-产品能力海报.png","marketing-posters/2026-09-05/嗨创造意-试点邀约海报.html","marketing-posters/2026-09-05/嗨创造意-试点邀约海报.png","marketing-posters/2026-09-05/试点邀约版-制作说明.md","product-website/README.md","product-website/app.js","product-website/assets/creative-stage.png","product-website/assets/night-live.png","product-website/design/01-hero.png","product-website/design/02-product.png","product-website/design/03-pilot.png","product-website/design/preview-desktop.png","product-website/design/preview-mobile.png","product-website/design/prompts.json","product-website/design/核对记录.md","product-website/design/设计说明.md","product-website/index.html","product-website/styles.css","sales-documents/README.md","sales-documents/嗨创造意客户案例采集与效果证明模板.docx","sales-documents/嗨创造意客户版产品一页纸.docx","sales-documents/嗨创造意报价与服务范围说明.docx","sales-documents/嗨创造意试点方案与验收表.docx","sales-documents/嗨创造意销售演示脚本与常见问答.docx","sales-documents/销售资料核对与推进清单.md","嗨创造意的品牌颜色.md"],"removed":[],"modified":[]},{"id":"5e0ee64b29714ffc4eb45c64d9538e3c02a46bc5","message":"chore(design): 归档品牌原型与海报交付产物\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/5e0ee64b29714ffc4eb45c64d9538e3c02a46bc5","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-09-05T18:01:42-07:00","added":["output/haichuang-posters-20260905/05-capabilities.pdf","output/haichuang-posters-20260905/README.md","output/haichuang-posters-20260905/all-posters.html","output/haichuang-posters-20260905/artwork/01-inspiration.png","output/haichuang-posters-20260905/artwork/02-create.png","output/haichuang-posters-20260905/artwork/03-stage.png","output/haichuang-posters-20260905/artwork/04-brand.png","output/haichuang-posters-20260905/artwork/05-capabilities.png","output/haichuang-posters-20260905/capabilities-validation.json","output/haichuang-posters-20260905/editable/01-inspiration.html","output/haichuang-posters-20260905/editable/02-create.html","output/haichuang-posters-20260905/editable/03-stage.html","output/haichuang-posters-20260905/editable/04-brand.html","output/haichuang-posters-20260905/editable/05-capabilities.html","output/haichuang-posters-20260905/editable/compose.cjs","output/haichuang-posters-20260905/haichuang-poster-pack.zip","output/haichuang-posters-20260905/haichuang-posters.pdf","output/haichuang-posters-20260905/manifest.json","output/haichuang-posters-20260905/posters/01-inspiration.png","output/haichuang-posters-20260905/posters/02-create.png","output/haichuang-posters-20260905/posters/03-stage.png","output/haichuang-posters-20260905/posters/04-brand.png","output/haichuang-posters-20260905/posters/05-capabilities.png","output/haichuang-posters-20260905/review-board.html","output/haichuang-posters-20260905/review-manifest.json","output/haichuang-posters-20260905/validation.json","output/uiux-prototype-20260905/dist-desktop/assets/desktop-DQsNh75W.js"],"removed":["output/uiux-prototype-20260905/dist-desktop/assets/desktop-BjV2Vpbn.js"],"modified":["output/uiux-prototype-20260905/AGENTS.md","output/uiux-prototype-20260905/README.md","output/uiux-prototype-20260905/desktop.html","output/uiux-prototype-20260905/dist-desktop/desktop.html","output/uiux-prototype-20260905/dist-desktop/gallery.html","output/uiux-prototype-20260905/docs/interaction-guide.md","output/uiux-prototype-20260905/page-manifest.json","output/uiux-prototype-20260905/public/gallery.html","output/uiux-prototype-20260905/qa/make-gallery.py","output/uiux-prototype-20260905/src/Desktop.tsx","output/uiux-prototype-20260905/src/Prototype.tsx","output/uiux-prototype-20260905/src/studio/CreationScreens.tsx","output/uiux-prototype-20260905/src/studio/ManagementScreens.tsx"]},{"id":"84c560123fc1d31dfe79f48b6e295fee4584e32c","message":"test(reports): 保存当前检查结果与全量归档说明\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/84c560123fc1d31dfe79f48b6e295fee4584e32c","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-09-05T18:01:41-07:00","added":["reports/dependency-audit.latest.json","reports/full-submit-2026-09-05/README.md","reports/full-submit-2026-09-05/check.txt","reports/full-submit-2026-09-05/identity.txt","reports/full-submit-2026-09-05/lint.txt","reports/full-submit-2026-09-05/tests.txt","reports/full-submit-2026-09-05/types.txt","reports/prd-failure.png","reports/ui-failure.png","reports/ui-failure.txt"],"removed":[],"modified":["reports/admin-desktop.png","reports/admin-mobile.png","reports/baseline.json","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/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-security.latest.json","reports/project-deep-analysis-2026-09-05.md","reports/public-file-integration.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/storyboard-director-guard.latest.json","reports/ui-acceptance.desktop.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"]},{"id":"203935aa9581de17a20fa0aec73b142276964477","message":"test(reports): 收纳品牌、产品活动与治理专项报告\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/203935aa9581de17a20fa0aec73b142276964477","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-09-05T18:01:40-07:00","added":["reports/brand-rename-2026-09-05/README.md","reports/brand-rename-2026-09-05/admin-1440.png","reports/brand-rename-2026-09-05/admin-390.png","reports/brand-rename-2026-09-05/browser-initial.json","reports/brand-rename-2026-09-05/browser.json","reports/brand-rename-2026-09-05/changes.json","reports/brand-rename-2026-09-05/login-1440.png","reports/brand-rename-2026-09-05/login-390.png","reports/brand-rename-2026-09-05/prototype-desktop.png","reports/brand-rename-2026-09-05/prototype-mobile.png","reports/brand-rename-2026-09-05/validation.json","reports/brand-rename-2026-09-05/workspace-1440.png","reports/brand-rename-2026-09-05/workspace-390.png","reports/documentation-refresh-2026-09-05/README.md","reports/documentation-refresh-2026-09-05/changes.json","reports/documentation-refresh-2026-09-05/check-docs.py","reports/documentation-refresh-2026-09-05/governance-docs.json","reports/documentation-refresh-2026-09-05/reviewed-files.json","reports/documentation-refresh-2026-09-05/validation.json","reports/governance-repair-2026-09-05/README.md","reports/governance-repair-2026-09-05/caddy-config.json","reports/governance-repair-2026-09-05/drifted-2311/README.md","reports/governance-repair-2026-09-05/drifted-2311/caddy-config.json","reports/governance-repair-2026-09-05/drifted-2311/summary.json","reports/governance-repair-2026-09-05/drifted-2311/verified-source-files.json","reports/governance-repair-2026-09-05/post-verification-drift.json","reports/governance-repair-2026-09-05/summary.json","reports/governance-repair-2026-09-05/verified-2306/README.md","reports/governance-repair-2026-09-05/verified-2306/caddy-config.json","reports/governance-repair-2026-09-05/verified-2306/summary.json","reports/governance-repair-2026-09-05/verified-source-files.json","reports/product-activity-acceptance-2026-09-05/01-running-version.png","reports/product-activity-acceptance-2026-09-05/02-preview-entry-before.png","reports/product-activity-acceptance-2026-09-05/03-workspace-before.png","reports/product-activity-acceptance-2026-09-05/04-brand.png","reports/product-activity-acceptance-2026-09-05/05-template.png","reports/product-activity-acceptance-2026-09-05/06-content-output.png","reports/product-activity-acceptance-2026-09-05/07-workspace-after.png","reports/product-activity-acceptance-2026-09-05/08-template-brand-scope.png","reports/product-activity-acceptance-2026-09-05/09-template-handoff.png","reports/product-activity-acceptance-2026-09-05/10-edit-brand-empty.png","reports/product-activity-acceptance-2026-09-05/11-video-readiness.png","reports/product-activity-acceptance-2026-09-05/12-delivery.png","reports/product-activity-acceptance-2026-09-05/13-formal-task.png","reports/product-activity-acceptance-2026-09-05/14-template-empty-after.png","reports/product-activity-acceptance-2026-09-05/README.md","reports/product-activity-acceptance-2026-09-05/brand-after-dom.txt","reports/product-activity-acceptance-2026-09-05/delivery-dom.txt","reports/product-activity-acceptance-2026-09-05/edit-empty-dom.txt","reports/product-activity-acceptance-2026-09-05/task-delivery-dom.txt","reports/product-activity-acceptance-2026-09-05/template-after-dom.txt","reports/product-activity-acceptance-2026-09-05/template-positive-dom.txt","reports/product-activity-acceptance-2026-09-05/verification.json","reports/product-activity-acceptance-2026-09-05/video-dom.txt","reports/project-analysis-2026-09-05/README.md","reports/project-analysis-2026-09-05/boundary-probes.cjs","reports/project-analysis-2026-09-05/boundary-probes.json","reports/project-analysis-2026-09-05/callback-probe.json","reports/project-analysis-2026-09-05/callback-probe.py","reports/project-analysis-2026-09-05/changed-during-analysis.json","reports/project-analysis-2026-09-05/governance-run.json","reports/project-analysis-2026-09-05/governance.snapshot.json","reports/project-analysis-2026-09-05/snapshot-start.json","reports/project-analysis-2026-09-05/verification-final.json"],"removed":[],"modified":[]},{"id":"d5d92363c75d77efca60da1a100ab6496b3210e5","message":"test(reports): 归档修复部署及固定版本验收证据\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/d5d92363c75d77efca60da1a100ab6496b3210e5","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-09-05T18:01:40-07:00","added":["reports/repair-deploy-2026-09-05/release/README.md","reports/repair-deploy-2026-09-05/release/admin-desktop.png","reports/repair-deploy-2026-09-05/release/admin-mobile.png","reports/repair-deploy-2026-09-05/release/candidate-smoke.json","reports/repair-deploy-2026-09-05/release/cleanup.json","reports/repair-deploy-2026-09-05/release/content-detail.brief-desktop.png","reports/repair-deploy-2026-09-05/release/content-detail.images-desktop.png","reports/repair-deploy-2026-09-05/release/content-detail.output-desktop.png","reports/repair-deploy-2026-09-05/release/content-detail.output-mobile.png","reports/repair-deploy-2026-09-05/release/content-detail.plans-desktop.png","reports/repair-deploy-2026-09-05/release/content-detail.review-desktop.png","reports/repair-deploy-2026-09-05/release/cutover.json","reports/repair-deploy-2026-09-05/release/deployed-1440.png","reports/repair-deploy-2026-09-05/release/deployed-390.png","reports/repair-deploy-2026-09-05/release/deployed-api-smoke.json","reports/repair-deploy-2026-09-05/release/deployed-browser.json","reports/repair-deploy-2026-09-05/release/deployed-services.json","reports/repair-deploy-2026-09-05/release/final-revision.json","reports/repair-deploy-2026-09-05/release/image-source-verification.json","reports/repair-deploy-2026-09-05/release/inference-acceptance.latest.json","reports/repair-deploy-2026-09-05/release/initialization-failure/inference-acceptance.latest.json","reports/repair-deploy-2026-09-05/release/initialization-failure/production-acceptance.latest.json","reports/repair-deploy-2026-09-05/release/initialization-failure/public-file-acceptance.latest.json","reports/repair-deploy-2026-09-05/release/initialization-failure/runtime-acceptance.latest.json","reports/repair-deploy-2026-09-05/release/initialization-failure/script-acceptance.latest.json","reports/repair-deploy-2026-09-05/release/initialization-failure/ui-acceptance.latest.json","reports/repair-deploy-2026-09-05/release/model-api-key-saved.png","reports/repair-deploy-2026-09-05/release/model-credential-error.desktop.png","reports/repair-deploy-2026-09-05/release/model-credential-error.mobile.png","reports/repair-deploy-2026-09-05/release/model-inventory.json","reports/repair-deploy-2026-09-05/release/online-model-readiness.json","reports/repair-deploy-2026-09-05/release/prd-retry.mobile.png","reports/repair-deploy-2026-09-05/release/prd-review.desktop.png","reports/repair-deploy-2026-09-05/release/production-acceptance.latest.json","reports/repair-deploy-2026-09-05/release/public-file-acceptance.latest.json","reports/repair-deploy-2026-09-05/release/release-summary.json","reports/repair-deploy-2026-09-05/release/runtime-acceptance.latest.json","reports/repair-deploy-2026-09-05/release/script-acceptance.latest.json","reports/repair-deploy-2026-09-05/release/ui-acceptance.desktop.png","reports/repair-deploy-2026-09-05/release/ui-acceptance.latest.json","reports/repair-deploy-2026-09-05/release/ui-acceptance.mobile.png","reports/repair-deploy-2026-09-05/release/ui-acceptance.production.png","reports/repair-deploy-2026-09-05/release/ux-edit.desktop.png","reports/repair-deploy-2026-09-05/release/ux-home.desktop.png","reports/repair-deploy-2026-09-05/release/ux-home.mobile.png","reports/repair-deploy-2026-09-05/release/ux-intake.desktop.png"],"removed":[],"modified":["reports/repair-deploy-2026-09-05/online-model-readiness.json","reports/repair-deploy-2026-09-05/quality.log","reports/repair-deploy-2026-09-05/ui.log"]}],"total_commits":0,"head_commit":{"id":"d325551644ebf1c26553289cf0c6807695d4d940","message":"docs(marketing): 纳入官网、销售资料、营销海报与品牌配色\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/d325551644ebf1c26553289cf0c6807695d4d940","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-09-05T18:01:43-07:00","added":["marketing-posters/2026-09-05/capabilities-background.png","marketing-posters/2026-09-05/creative-background.png","marketing-posters/2026-09-05/pilot-background.png","marketing-posters/2026-09-05/产品能力版-制作说明.md","marketing-posters/2026-09-05/制作说明.md","marketing-posters/2026-09-05/嗨创造意-产品宣传海报.html","marketing-posters/2026-09-05/嗨创造意-产品宣传海报.png","marketing-posters/2026-09-05/嗨创造意-产品能力海报.html","marketing-posters/2026-09-05/嗨创造意-产品能力海报.png","marketing-posters/2026-09-05/嗨创造意-试点邀约海报.html","marketing-posters/2026-09-05/嗨创造意-试点邀约海报.png","marketing-posters/2026-09-05/试点邀约版-制作说明.md","product-website/README.md","product-website/app.js","product-website/assets/creative-stage.png","product-website/assets/night-live.png","product-website/design/01-hero.png","product-website/design/02-product.png","product-website/design/03-pilot.png","product-website/design/preview-desktop.png","product-website/design/preview-mobile.png","product-website/design/prompts.json","product-website/design/核对记录.md","product-website/design/设计说明.md","product-website/index.html","product-website/styles.css","sales-documents/README.md","sales-documents/嗨创造意客户案例采集与效果证明模板.docx","sales-documents/嗨创造意客户版产品一页纸.docx","sales-documents/嗨创造意报价与服务范围说明.docx","sales-documents/嗨创造意试点方案与验收表.docx","sales-documents/嗨创造意销售演示脚本与常见问答.docx","sales-documents/销售资料核对与推进清单.md","嗨创造意的品牌颜色.md"],"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":198561,"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":5,"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-06T06:25: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
|
1788656535
|
1788656573
|
0
|
1788656534
|
1788656573
|
group: governance-${{ github.workflow }}-${{ githu group: governance-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: "true"
...
|
governance-governance.yml-refs/heads/main
|
1
|
Edit
Delete
|
|
23644
|
docs(reports): 记录增量核验结果及新版运行状态
|
57
|
5
|
governance.yml
|
16
|
5
|
0
|
refs/heads/main
|
368376ebf7770d77dd297d1765ff8611b5f7da12
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"d325551644ebf1c26553289cf0c6807695d4d940","after":"368376ebf7770d77dd297d1765ff8611b5f7da12","compare_url":"https://gitea.g-hi.com/luoanwu/image-generation/compare/d325551644ebf1c26553289cf0c6807695d4d940...368376ebf7770d77dd297d1765ff8611b5f7da12","commits":[{"id":"368376ebf7770d77dd297d1765ff8611b5f7da12","message":"docs(reports): 记录增量核验结果及新版运行状态\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/368376ebf7770d77dd297d1765ff8611b5f7da12","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-09-05T18:24:26-07:00","added":["reports/incremental-submit-2026-09-05.md"],"removed":[],"modified":["docs/governance/log/2026-09-05.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-acceptance.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/storyboard-director-guard.latest.json","reports/validation-source.latest.json"]},{"id":"fd9e449299fd85b671c8863c0d621725c17553e3","message":"fix(governance): 对齐路由权限并加强租户与运行验收检查\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/fd9e449299fd85b671c8863c0d621725c17553e3","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-09-05T18:23:29-07:00","added":["apps/api-fastify/test/route-shape.integration.test.ts","apps/api-nestjs/test/route-shape.integration.test.ts","scripts/lib/tenant-schema.mjs","scripts/lib/tenant-schema.test.mjs","scripts/lib/vitest-skips.mjs","scripts/lib/vitest-skips.test.mjs"],"removed":[],"modified":["CLAUDE.md","apps/api-fastify/test/material-runtime-trust.test.ts","apps/api-nestjs/src/create-app.ts","apps/api-nestjs/test/material-runtime-guard.test.ts","package.json","packages/contracts/src/material-access.test.ts","packages/contracts/src/material-access.ts","scripts/check-runtime-acceptance.mjs","scripts/governance-report.mjs","scripts/lib/source-verification.test.mjs"]}],"total_commits":0,"head_commit":{"id":"368376ebf7770d77dd297d1765ff8611b5f7da12","message":"docs(reports): 记录增量核验结果及新版运行状态\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/368376ebf7770d77dd297d1765ff8611b5f7da12","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-09-05T18:24:26-07:00","added":["reports/incremental-submit-2026-09-05.md"],"removed":[],"modified":["docs/governance/log/2026-09-05.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-acceptance.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/storyboard-director-guard.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":282971,"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":5,"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-06T09:02:14+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
|
1788657875
|
1788657911
|
0
|
1788657874
|
1788657911
|
group: governance-${{ github.workflow }}-${{ githu group: governance-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: "true"
...
|
governance-governance.yml-refs/heads/main
|
1
|
Edit
Delete
|
|
23645
|
test: archive product acceptance and deployment ev test: archive product acceptance and deployment evidence...
|
57
|
5
|
governance.yml
|
17
|
5
|
0
|
refs/heads/main
|
6d8783033df4e606323fc0e81180e217f4f47007
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"368376ebf7770d77dd297d1765ff8611b5f7da12","after":"6d8783033df4e606323fc0e81180e217f4f47007","compare_url":"https://gitea.g-hi.com/luoanwu/image-generation/compare/368376ebf7770d77dd297d1765ff8611b5f7da12...6d8783033df4e606323fc0e81180e217f4f47007","commits":[{"id":"6d8783033df4e606323fc0e81180e217f4f47007","message":"test: archive product acceptance and deployment evidence\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/6d8783033df4e606323fc0e81180e217f4f47007","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-09-05T20:28:36-07:00","added":["reports/adversarial-audit-2026-09-05-round2/README.md","reports/adversarial-audit-2026-09-05-round2/cleanup.json","reports/adversarial-audit-2026-09-05-round2/deploy-r2.sh","reports/adversarial-audit-2026-09-05-round2/summary.json","reports/content-skills-2026-09-05/README.md","reports/deployment-sync-2026-09-05-r3/README.md","reports/deployment-sync-2026-09-05-r3/backup-manifest.json","reports/deployment-sync-2026-09-05-r3/boundary-smoke.json","reports/deployment-sync-2026-09-05-r3/browser-smoke.json","reports/deployment-sync-2026-09-05-r3/deployment.json","reports/deployment-sync-2026-09-05-r3/ocr-smoke-initial.json","reports/deployment-sync-2026-09-05-r3/ocr-smoke.json","reports/deployment-sync-2026-09-05-r3/release-source.json","reports/deployment-sync-2026-09-05-r3/runtime-final.json","reports/deployment-sync-2026-09-05-r3/summary.json","reports/product-acceptance-2026-09-05/README.md","reports/product-acceptance-2026-09-05/dependency-audit.latest.json","reports/product-acceptance-2026-09-05/inference-acceptance.latest.json","reports/product-acceptance-2026-09-05/production-acceptance.latest.json","reports/product-acceptance-2026-09-05/public-file-acceptance.latest.json","reports/product-acceptance-2026-09-05/runtime-acceptance.latest.json","reports/product-acceptance-2026-09-05/runtime-suite-details.json","reports/product-acceptance-2026-09-05/script-acceptance.latest.json","reports/product-acceptance-2026-09-05/summary.json","reports/product-acceptance-2026-09-05/ui-acceptance.latest.json","reports/product-acceptance-2026-09-05/validation.json"],"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/validation-source.latest.json"]},{"id":"c3836da779fbd27c16184f6ff4ddd068c92e1bec","message":"docs: consolidate development experience and release records\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/c3836da779fbd27c16184f6ff4ddd068c92e1bec","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-09-05T20:28:36-07:00","added":["docs/development-experience/README.md","docs/development-experience/evidence.md","docs/development-experience/playbook.md","docs/development-experience/source-manifest.json","docs/development-experience/validation.json","docs/governance/log/2026-09-05-content-skills.md","docs/governance/log/2026-09-05-deployment-sync.md","docs/governance/log/2026-09-05-development-experience.md","docs/governance/log/2026-09-05-product-acceptance.md","docs/governance/log/2026-09-05-submit.md","docs/releases/2026-09-05-r2.md","docs/releases/2026-09-05-r3.md"],"removed":[],"modified":["CLAUDE.md","docs/README.md","docs/governance/log/2026-09-05.md","docs/product/content-creation-workbench.md"]},{"id":"cb1925c4b73c1fe59ee637f461cbaacd7c2bf36a","message":"docs: record r6 deployment hardening and verified backup recovery\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/cb1925c4b73c1fe59ee637f461cbaacd7c2bf36a","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-09-05T20:24:46-07:00","added":["docs/governance/log/2026-09-05-deployment-hardening.md","docs/releases/2026-09-05-r6.md","reports/deployment-hardening-2026-09-05/README.md","reports/deployment-hardening-2026-09-05/browser-smoke.json","reports/deployment-hardening-2026-09-05/check-summary.json","reports/deployment-hardening-2026-09-05/dependency-audit.latest.json","reports/deployment-hardening-2026-09-05/deployed-desktop.png","reports/deployment-hardening-2026-09-05/deployed-mobile.png","reports/deployment-hardening-2026-09-05/deployment.json","reports/deployment-hardening-2026-09-05/existing-assets-smoke.json","reports/deployment-hardening-2026-09-05/image-dependency-audit.json","reports/deployment-hardening-2026-09-05/inference-acceptance.latest.json","reports/deployment-hardening-2026-09-05/ocr-smoke.json","reports/deployment-hardening-2026-09-05/permissions-smoke.json","reports/deployment-hardening-2026-09-05/preflight.json","reports/deployment-hardening-2026-09-05/production-acceptance.latest.json","reports/deployment-hardening-2026-09-05/public-file-acceptance.latest.json","reports/deployment-hardening-2026-09-05/restore-validation.json","reports/deployment-hardening-2026-09-05/runtime-acceptance.latest.json","reports/deployment-hardening-2026-09-05/runtime-final.json","reports/deployment-hardening-2026-09-05/script-acceptance.latest.json","reports/deployment-hardening-2026-09-05/ui-acceptance.latest.json","reports/deployment-hardening-2026-09-05/verify.json"],"removed":[],"modified":["CLAUDE.md","docs/deploy-vm.md","reports/adversarial-acceptance-audit.latest.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/storyboard-director-guard.latest.json","reports/ui-acceptance.latest.json","reports/validation-source.latest.json"]},{"id":"373f2d3c6e51970c3f8d367537f96a33be5d1968","message":"fix: compare release schema with deployed files and preserve build cache\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/373f2d3c6e51970c3f8d367537f96a33be5d1968","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-09-05T20:11:58-07:00","added":[],"removed":[],"modified":["deploy/vm/Dockerfile","deploy/vm/release.py","deploy/vm/release_test.py","deploy/vm/sidecar.Dockerfile"]},{"id":"354419914471d5fca9a9ed643a32fc00d6a847af","message":"fix: harden VM runtime and make releases verifiable and recoverable\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/354419914471d5fca9a9ed643a32fc00d6a847af","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-09-05T20:03:17-07:00","added":["apps/api-nestjs/src/worker-health.ts","deploy/vm/release.py","deploy/vm/release_test.py","scripts/check-worker-health.mjs","scripts/deployment-policy.test.mjs"],"removed":[],"modified":["apps/api-nestjs/src/creative-worker.ts","apps/api-nestjs/src/production-worker.ts","deploy/vm/Dockerfile","deploy/vm/deploy.sh","deploy/vm/docker-compose.yml","deploy/vm/release.sh","deploy/vm/sidecar.Dockerfile"]}],"total_commits":0,"head_commit":{"id":"6d8783033df4e606323fc0e81180e217f4f47007","message":"test: archive product acceptance and deployment evidence\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/6d8783033df4e606323fc0e81180e217f4f47007","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-09-05T20:28:36-07:00","added":["reports/adversarial-audit-2026-09-05-round2/README.md","reports/adversarial-audit-2026-09-05-round2/cleanup.json","reports/adversarial-audit-2026-09-05-round2/deploy-r2.sh","reports/adversarial-audit-2026-09-05-round2/summary.json","reports/content-skills-2026-09-05/README.md","reports/deployment-sync-2026-09-05-r3/README.md","reports/deployment-sync-2026-09-05-r3/backup-manifest.json","reports/deployment-sync-2026-09-05-r3/boundary-smoke.json","reports/deployment-sync-2026-09-05-r3/browser-smoke.json","reports/deployment-sync-2026-09-05-r3/deployment.json","reports/deployment-sync-2026-09-05-r3/ocr-smoke-initial.json","reports/deployment-sync-2026-09-05-r3/ocr-smoke.json","reports/deployment-sync-2026-09-05-r3/release-source.json","reports/deployment-sync-2026-09-05-r3/runtime-final.json","reports/deployment-sync-2026-09-05-r3/summary.json","reports/product-acceptance-2026-09-05/README.md","reports/product-acceptance-2026-09-05/dependency-audit.latest.json","reports/product-acceptance-2026-09-05/inference-acceptance.latest.json","reports/product-acceptance-2026-09-05/production-acceptance.latest.json","reports/product-acceptance-2026-09-05/public-file-acceptance.latest.json","reports/product-acceptance-2026-09-05/runtime-acceptance.latest.json","reports/product-acceptance-2026-09-05/runtime-suite-details.json","reports/product-acceptance-2026-09-05/script-acceptance.latest.json","reports/product-acceptance-2026-09-05/summary.json","reports/product-acceptance-2026-09-05/ui-acceptance.latest.json","reports/product-acceptance-2026-09-05/validation.json"],"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/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":283074,"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":5,"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-06T09:24: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
|
1788665351
|
1788665418
|
0
|
1788665350
|
1788665418
|
group: governance-${{ github.workflow }}-${{ githu group: governance-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: "true"
...
|
governance-governance.yml-refs/heads/main
|
1
|
Edit
Delete
|
|
23646
|
test(reports): 归档对抗审计第二轮证据日志并刷新主分支门禁报告
|
57
|
5
|
governance.yml
|
18
|
5
|
0
|
refs/heads/main
|
acd2accfb017c5b4e3f7ff5f00f33dd367797889
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"6d8783033df4e606323fc0e81180e217f4f47007","after":"acd2accfb017c5b4e3f7ff5f00f33dd367797889","compare_url":"https://gitea.g-hi.com/luoanwu/image-generation/compare/6d8783033df4e606323fc0e81180e217f4f47007...acd2accfb017c5b4e3f7ff5f00f33dd367797889","commits":[{"id":"acd2accfb017c5b4e3f7ff5f00f33dd367797889","message":"test(reports): 归档对抗审计第二轮证据日志并刷新主分支门禁报告\n\n- 对抗审计第二轮(reports/adversarial-audit-2026-09-05-round2)的 24 份证据日志按既有审计目录惯例强制入库:\n 路由大小写探针、权限映射探针、修复前后 route-shape / guard / contracts 复验、四次 check:runtime、\n 部署前后状态与 16 项线上边界探针、操作者部署终端摘录、三次 pnpm check(含主分支 6d87830 提交后的 precommit 复核,43 项脚本自测通过)。\n- 刷新 reports/*.latest.json:与主分支 6d87830 同一棵树上的静态门禁与治理棘轮结果(heavyGateDocDrift 0)。\n\nCo-Authored-By: Claude Fable 5.1 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/acd2accfb017c5b4e3f7ff5f00f33dd367797889","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-09-05T20:34:33-07:00","added":["reports/adversarial-audit-2026-09-05-round2/check-runtime-final.log","reports/adversarial-audit-2026-09-05-round2/check-runtime-final2.log","reports/adversarial-audit-2026-09-05-round2/check-runtime-followup.log","reports/adversarial-audit-2026-09-05-round2/check-runtime.log","reports/adversarial-audit-2026-09-05-round2/contracts-material-access-after-fix.log","reports/adversarial-audit-2026-09-05-round2/contracts-permission-probe-before-fix.log","reports/adversarial-audit-2026-09-05-round2/deploy-after.log","reports/adversarial-audit-2026-09-05-round2/deploy-before.log","reports/adversarial-audit-2026-09-05-round2/deploy-user-run.log","reports/adversarial-audit-2026-09-05-round2/deployed-bff-origin-probe.log","reports/adversarial-audit-2026-09-05-round2/deployed-surface-probe.log","reports/adversarial-audit-2026-09-05-round2/fastify-full-suite-rerun.log","reports/adversarial-audit-2026-09-05-round2/fastify-http-acceptance-after-cas-fix.log","reports/adversarial-audit-2026-09-05-round2/fastify-http-orders-runscoped.log","reports/adversarial-audit-2026-09-05-round2/fastify-route-shape.log","reports/adversarial-audit-2026-09-05-round2/fastify-trust-route-shape-after-fix.log","reports/adversarial-audit-2026-09-05-round2/nestjs-http-acceptance-after-cas-fix.log","reports/adversarial-audit-2026-09-05-round2/nestjs-leases-http-orders-runscoped.log","reports/adversarial-audit-2026-09-05-round2/nestjs-route-shape-after-fix.log","reports/adversarial-audit-2026-09-05-round2/nestjs-route-shape-before-fix.log","reports/adversarial-audit-2026-09-05-round2/pnpm-check-final.log","reports/adversarial-audit-2026-09-05-round2/pnpm-check-followup.log","reports/adversarial-audit-2026-09-05-round2/pnpm-check-precommit.log","reports/adversarial-audit-2026-09-05-round2/route-case-probe.log"],"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/validation-source.latest.json"]}],"total_commits":0,"head_commit":{"id":"acd2accfb017c5b4e3f7ff5f00f33dd367797889","message":"test(reports): 归档对抗审计第二轮证据日志并刷新主分支门禁报告\n\n- 对抗审计第二轮(reports/adversarial-audit-2026-09-05-round2)的 24 份证据日志按既有审计目录惯例强制入库:\n 路由大小写探针、权限映射探针、修复前后 route-shape / guard / contracts 复验、四次 check:runtime、\n 部署前后状态与 16 项线上边界探针、操作者部署终端摘录、三次 pnpm check(含主分支 6d87830 提交后的 precommit 复核,43 项脚本自测通过)。\n- 刷新 reports/*.latest.json:与主分支 6d87830 同一棵树上的静态门禁与治理棘轮结果(heavyGateDocDrift 0)。\n\nCo-Authored-By: Claude Fable 5.1 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/acd2accfb017c5b4e3f7ff5f00f33dd367797889","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-09-05T20:34:33-07:00","added":["reports/adversarial-audit-2026-09-05-round2/check-runtime-final.log","reports/adversarial-audit-2026-09-05-round2/check-runtime-final2.log","reports/adversarial-audit-2026-09-05-round2/check-runtime-followup.log","reports/adversarial-audit-2026-09-05-round2/check-runtime.log","reports/adversarial-audit-2026-09-05-round2/contracts-material-access-after-fix.log","reports/adversarial-audit-2026-09-05-round2/contracts-permission-probe-before-fix.log","reports/adversarial-audit-2026-09-05-round2/deploy-after.log","reports/adversarial-audit-2026-09-05-round2/deploy-before.log","reports/adversarial-audit-2026-09-05-round2/deploy-user-run.log","reports/adversarial-audit-2026-09-05-round2/deployed-bff-origin-probe.log","reports/adversarial-audit-2026-09-05-round2/deployed-surface-probe.log","reports/adversarial-audit-2026-09-05-round2/fastify-full-suite-rerun.log","reports/adversarial-audit-2026-09-05-round2/fastify-http-acceptance-after-cas-fix.log","reports/adversarial-audit-2026-09-05-round2/fastify-http-orders-runscoped.log","reports/adversarial-audit-2026-09-05-round2/fastify-route-shape.log","reports/adversarial-audit-2026-09-05-round2/fastify-trust-route-shape-after-fix.log","reports/adversarial-audit-2026-09-05-round2/nestjs-http-acceptance-after-cas-fix.log","reports/adversarial-audit-2026-09-05-round2/nestjs-leases-http-orders-runscoped.log","reports/adversarial-audit-2026-09-05-round2/nestjs-route-shape-after-fix.log","reports/adversarial-audit-2026-09-05-round2/nestjs-route-shape-before-fix.log","reports/adversarial-audit-2026-09-05-round2/pnpm-check-final.log","reports/adversarial-audit-2026-09-05-round2/pnpm-check-followup.log","reports/adversarial-audit-2026-09-05-round2/pnpm-check-precommit.log","reports/adversarial-audit-2026-09-05-round2/route-case-probe.log"],"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/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":283836,"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":5,"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-06T11:29:10+08:00","archived_at":"1970-01-01T08:00:00+08:00","permissions":{"admin":true,"push":true,"pull":true},"has_code":true,"has_issues":true,"internal_tracker":{"enable_time_tracker":true,"allow_only_contributors_to_track_time":true,"enable_issue_dependencies":true},"has_wiki":true,"has_pull_requests":true,"has_projects":true,"projects_mode":"all","has_releases":true,"has_packages":true,"has_actions":true,"ignore_whitespace_conflicts":false,"allow_merge_commits":true,"allow_rebase":true,"allow_rebase_explicit":true,"allow_squash_merge":true,"allow_fast_forward_only_merge":true,"allow_rebase_update":true,"allow_manual_merge":false,"autodetect_manual_merge":false,"default_delete_branch_after_merge":false,"default_merge_style":"merge","default_allow_maintainer_edit":true,"avatar_url":"","internal":false,"mirror_interval":"","object_format_name":"sha1","mirror_updated":"0001-01-01T00:00:00Z","topics":[],"licenses":[]},"pusher":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"sender":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"}}...
|
push
|
2
|
4
|
1788665682
|
1788665721
|
0
|
1788665681
|
1788665721
|
group: governance-${{ github.workflow }}-${{ githu group: governance-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: "true"
...
|
governance-governance.yml-refs/heads/main
|
1
|
Edit
Delete
|
|
23647
|
docs: record full branch integration and acceptanc docs: record full branch integration and acceptance evidence...
|
57
|
5
|
governance.yml
|
19
|
5
|
0
|
refs/heads/main
|
c8262c6f267104598721c37a1781409e129f3ed7
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"acd2accfb017c5b4e3f7ff5f00f33dd367797889","after":"c8262c6f267104598721c37a1781409e129f3ed7","compare_url":"https://gitea.g-hi.com/luoanwu/image-generation/compare/acd2accfb017c5b4e3f7ff5f00f33dd367797889...c8262c6f267104598721c37a1781409e129f3ed7","commits":[{"id":"c8262c6f267104598721c37a1781409e129f3ed7","message":"docs: record full branch integration and acceptance evidence\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/c8262c6f267104598721c37a1781409e129f3ed7","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-09-05T21:41:58-07:00","added":["docs/governance/log/2026-09-05-merge-all.md","reports/branch-integration-2026-09-05/README.md","reports/branch-integration-2026-09-05/branches.json","reports/branch-integration-2026-09-05/check-summary.json","reports/branch-integration-2026-09-05/dependency-audit.latest.json","reports/branch-integration-2026-09-05/desktop-deliveries.png","reports/branch-integration-2026-09-05/desktop-events.png","reports/branch-integration-2026-09-05/desktop-reviews.png","reports/branch-integration-2026-09-05/inference-acceptance.latest.json","reports/branch-integration-2026-09-05/mobile-deliveries.png","reports/branch-integration-2026-09-05/mobile-events.png","reports/branch-integration-2026-09-05/mobile-reviews.png","reports/branch-integration-2026-09-05/production-acceptance.latest.json","reports/branch-integration-2026-09-05/public-file-acceptance.latest.json","reports/branch-integration-2026-09-05/runtime-acceptance.latest.json","reports/branch-integration-2026-09-05/script-acceptance.latest.json","reports/branch-integration-2026-09-05/ui-acceptance.latest.json","reports/branch-integration-2026-09-05/ui-extra.json"],"removed":[],"modified":["CLAUDE.md","reports/adversarial-acceptance-audit.latest.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/storyboard-director-guard.latest.json","reports/ui-acceptance.latest.json","reports/validation-source.latest.json"]},{"id":"d58e74fc4f192a9858b6a9548c6f5abf6fe77369","message":"test: align production intake entry with merged UI label\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/d58e74fc4f192a9858b6a9548c6f5abf6fe77369","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-09-05T21:34:03-07:00","added":[],"removed":[],"modified":["scripts/lib/prd-ui-acceptance.mjs"]},{"id":"2e56a0924623ec2c7d9d9b7852fdec57f119d997","message":"test: verify semantic model selection after UI integration\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/2e56a0924623ec2c7d9d9b7852fdec57f119d997","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-09-05T21:30:10-07:00","added":[],"removed":[],"modified":["apps/web/tsconfig.json","scripts/check-ui-acceptance.mjs"]},{"id":"5c7e610b36b299783a76b9f994bfabe80933fcf5","message":"merge: include content support skills branch already integrated in accepted source\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/5c7e610b36b299783a76b9f994bfabe80933fcf5","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-09-05T21:22:47-07:00","added":[],"removed":[],"modified":[]},{"id":"90f3d7741978622805c11fbd539ecec2b31c2b0c","message":"merge: integrate detail-page UX while preserving accepted content and security behavior\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/90f3d7741978622805c11fbd539ecec2b31c2b0c","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-09-05T21:22:24-07:00","added":["apps/web/src/components/material-factory/ActivityLog.tsx","apps/web/src/components/material-factory/asset-preview.ts","apps/web/src/components/material-factory/delivery-download.ts","apps/web/src/components/material-factory/format.ts","apps/web/src/components/material-factory/production-actors.ts"],"removed":[],"modified":["CLAUDE.md","apps/web/src/components/material-factory/BlockedResolutionPanel.tsx","apps/web/src/components/material-factory/BrandHub.tsx","apps/web/src/components/material-factory/BrandLogoEditor.tsx","apps/web/src/components/material-factory/ContentStudio.tsx","apps/web/src/components/material-factory/CreateStudio.tsx","apps/web/src/components/material-factory/CreativeSupportSkills.tsx","apps/web/src/components/material-factory/DeliveryCenter.tsx","apps/web/src/components/material-factory/DemoExportModal.tsx","apps/web/src/components/material-factory/DirectorReviewWorkbench.tsx","apps/web/src/components/material-factory/EditStudio.tsx","apps/web/src/components/material-factory/ExportModal.tsx","apps/web/src/components/material-factory/FactoryShell.tsx","apps/web/src/components/material-factory/InpaintStudio.tsx","apps/web/src/components/material-factory/InstanceGallery.tsx","apps/web/src/components/material-factory/MasterCanvas.tsx","apps/web/src/components/material-factory/NarrativeBeats.tsx","apps/web/src/components/material-factory/PipelineFlow.tsx","apps/web/src/components/material-factory/ProductionDetail.tsx","apps/web/src/components/material-factory/PromoteDraftButton.tsx","apps/web/src/components/material-factory/QualityEvidencePanel.tsx","apps/web/src/components/material-factory/ReviewCenter.tsx","apps/web/src/components/material-factory/RoleConfirmPanel.tsx","apps/web/src/components/material-factory/RoleReferencePreview.tsx","apps/web/src/components/material-factory/ScriptStudio.tsx","apps/web/src/components/material-factory/ShotBoard.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/TaskCenter.tsx","apps/web/src/components/material-factory/TemplateSizePicker.tsx","apps/web/src/components/material-factory/TemplateStudio.tsx","apps/web/src/components/material-factory/VersionCompare.tsx","apps/web/src/components/material-factory/VideoContactImport.tsx","apps/web/src/components/material-factory/VideoStudio.tsx","apps/web/src/components/material-factory/constants.ts","apps/web/src/components/material-factory/content-studio.module.css","apps/web/src/components/material-factory/model-catalog.tsx","apps/web/src/components/material-factory/production-labels.ts","apps/web/src/components/material-factory/ui.tsx","docs/governance/log/2026-09-05.md"]}],"total_commits":0,"head_commit":{"id":"c8262c6f267104598721c37a1781409e129f3ed7","message":"docs: record full branch integration and acceptance evidence\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/c8262c6f267104598721c37a1781409e129f3ed7","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-09-05T21:41:58-07:00","added":["docs/governance/log/2026-09-05-merge-all.md","reports/branch-integration-2026-09-05/README.md","reports/branch-integration-2026-09-05/branches.json","reports/branch-integration-2026-09-05/check-summary.json","reports/branch-integration-2026-09-05/dependency-audit.latest.json","reports/branch-integration-2026-09-05/desktop-deliveries.png","reports/branch-integration-2026-09-05/desktop-events.png","reports/branch-integration-2026-09-05/desktop-reviews.png","reports/branch-integration-2026-09-05/inference-acceptance.latest.json","reports/branch-integration-2026-09-05/mobile-deliveries.png","reports/branch-integration-2026-09-05/mobile-events.png","reports/branch-integration-2026-09-05/mobile-reviews.png","reports/branch-integration-2026-09-05/production-acceptance.latest.json","reports/branch-integration-2026-09-05/public-file-acceptance.latest.json","reports/branch-integration-2026-09-05/runtime-acceptance.latest.json","reports/branch-integration-2026-09-05/script-acceptance.latest.json","reports/branch-integration-2026-09-05/ui-acceptance.latest.json","reports/branch-integration-2026-09-05/ui-extra.json"],"removed":[],"modified":["CLAUDE.md","reports/adversarial-acceptance-audit.latest.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/storyboard-director-guard.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":283872,"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":5,"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-06T11:34:41+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
|
1788670197
|
1788670617
|
0
|
1788670196
|
1788670617
|
group: governance-${{ github.workflow }}-${{ githu group: governance-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: "true"
...
|
governance-governance.yml-refs/heads/main
|
1
|
Edit
Delete
|
|
23648
|
docs: record MiniMax domestic release and recovere docs: record MiniMax domestic release and recovered video...
|
57
|
5
|
governance.yml
|
20
|
5
|
0
|
refs/heads/main
|
9574d77a2e162c67402a7882dc1f258a3b8d7c45
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"c8262c6f267104598721c37a1781409e129f3ed7","after":"9574d77a2e162c67402a7882dc1f258a3b8d7c45","compare_url":"https://gitea.g-hi.com/luoanwu/image-generation/compare/c8262c6f267104598721c37a1781409e129f3ed7...9574d77a2e162c67402a7882dc1f258a3b8d7c45","commits":[{"id":"9574d77a2e162c67402a7882dc1f258a3b8d7c45","message":"docs: record MiniMax domestic release and recovered video\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/9574d77a2e162c67402a7882dc1f258a3b8d7c45","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-09-06T06:10:48-07:00","added":["docs/releases/2026-09-06-r12.md"],"removed":[],"modified":["CLAUDE.md","docs/governance/log/2026-09-06-minimax-region.md","reports/adversarial-acceptance-audit.latest.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/validation-source.latest.json"]},{"id":"d713aec6262b31645995ec08b7eeca247b871951","message":"fix: accept verified MiniMax domestic video output bucket\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/d713aec6262b31645995ec08b7eeca247b871951","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-09-06T06:03:07-07:00","added":["docs/governance/log/2026-09-06-minimax-region.md"],"removed":[],"modified":["CLAUDE.md","reports/adversarial-acceptance-audit.latest.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/storyboard-director-guard.latest.json","reports/ui-acceptance.latest.json","reports/validation-source.latest.json","services/model-sidecar/main.py","services/model-sidecar/test_minimax_video.py"]},{"id":"f7acedb7c66b9d4ae721e81c7793d5bffdd8046b","message":"docs: record video credential binding repair\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/f7acedb7c66b9d4ae721e81c7793d5bffdd8046b","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-09-06T05:42:54-07:00","added":["docs/governance/log/2026-09-06-video-credential-binding.md"],"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/validation-source.latest.json"]},{"id":"359d8282bbf8aa7d29294f05b56b185a5fd33fad","message":"docs: record r11 deployment and live empty-shot verification\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/359d8282bbf8aa7d29294f05b56b185a5fd33fad","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-09-06T05:32:58-07:00","added":["docs/releases/2026-09-06-r11.md"],"removed":[],"modified":["CLAUDE.md","docs/governance/log/2026-09-06-empty-shot-generation.md","reports/adversarial-acceptance-audit.latest.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/validation-source.latest.json"]},{"id":"e5859ebe99d589a4afc9794031660b805cc664c7","message":"fix: generate role-free shot stills from scene prompts\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/e5859ebe99d589a4afc9794031660b805cc664c7","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-09-06T05:24:23-07:00","added":["docs/governance/log/2026-09-06-empty-shot-generation.md"],"removed":[],"modified":["CLAUDE.md","apps/api-fastify/src/modules/material-factory/model-catalog.service.ts","apps/api-fastify/src/modules/material-factory/shooting-script.service.ts","apps/api-fastify/test/material-script.acceptance.test.ts","apps/api-nestjs/src/material-factory/model-catalog.service.ts","apps/api-nestjs/src/material-factory/shooting-script.service.ts","apps/api-nestjs/test/material-script.acceptance.test.ts","packages/contracts/src/script-role-gate.test.ts","packages/contracts/src/script.ts","reports/adversarial-acceptance-audit.latest.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/storyboard-director-guard.latest.json","reports/ui-acceptance.latest.json","reports/validation-source.latest.json","scripts/check-ui-acceptance.mjs","scripts/lib/storyboard-ui-fixture.mjs"]}],"total_commits":0,"head_commit":{"id":"9574d77a2e162c67402a7882dc1f258a3b8d7c45","message":"docs: record MiniMax domestic release and recovered video\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/9574d77a2e162c67402a7882dc1f258a3b8d7c45","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-09-06T06:10:48-07:00","added":["docs/releases/2026-09-06-r12.md"],"removed":[],"modified":["CLAUDE.md","docs/governance/log/2026-09-06-minimax-region.md","reports/adversarial-acceptance-audit.latest.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/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":284885,"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":5,"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-06T12:49: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
|
1788700789
|
1788700827
|
0
|
1788700788
|
1788700827
|
group: governance-${{ github.workflow }}-${{ githu group: governance-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: "true"
...
|
governance-governance.yml-refs/heads/main
|
1
|
Edit
Delete
|
|
23649
|
docs(shijie): record source-bound acceptance and o docs(shijie): record source-bound acceptance and operating boundaries...
|
57
|
5
|
governance.yml
|
21
|
5
|
0
|
refs/heads/main
|
fc554663851d45f888811fd92b1d92461abb2ef7
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"9574d77a2e162c67402a7882dc1f258a3b8d7c45","after":"fc554663851d45f888811fd92b1d92461abb2ef7","compare_url":"https://gitea.g-hi.com/luoanwu/image-generation/compare/9574d77a2e162c67402a7882dc1f258a3b8d7c45...fc554663851d45f888811fd92b1d92461abb2ef7","commits":[{"id":"fc554663851d45f888811fd92b1d92461abb2ef7","message":"docs(shijie): record source-bound acceptance and operating boundaries\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/fc554663851d45f888811fd92b1d92461abb2ef7","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-09-06T08:20:34-07:00","added":["docs/adr/0017-shijie-design-runtime.md","docs/governance/archive/adversarial-before-shijie-2026-09-06.md","docs/governance/log/2026-09-06-shijie-design.md","docs/shijie-design-runbook.md","reports/shijie-acceptance.latest.json","reports/shijie-design-acceptance.md","reports/shijie-live.latest.json","reports/shijie-performance.latest.json","reports/shijie-ui.latest.json"],"removed":[],"modified":["CLAUDE.md","docs/adr/README.md","docs/domain-glossary.md","docs/domain/owner-matrix.md","reports/adversarial-acceptance-audit.latest.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/storyboard-director-guard.latest.json","reports/ui-acceptance.latest.json","reports/validation-source.latest.json"]},{"id":"4ace15245483d6eb3afe2eb235df22ef133769a7","message":"test(shijie): add database, live model, WebGL and performance acceptance\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/4ace15245483d6eb3afe2eb235df22ef133769a7","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-09-06T08:19:39-07:00","added":["scripts/check-shijie-acceptance.mjs","scripts/check-shijie-benchmark.cjs","scripts/check-shijie-live.mjs","scripts/check-shijie-ui.cjs","scripts/seed-shijie-benchmark.cjs"],"removed":[],"modified":["deploy/vm/Dockerfile","deploy/vm/docker-compose.yml","package.json","turbo.json"]},{"id":"d71f86d47e2f39ff69701bf1456f14ad875ea7a1","message":"feat(shijie): connect model generation and four-menu Web3D workbench\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/d71f86d47e2f39ff69701bf1456f14ad875ea7a1","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-09-06T08:19:27-07:00","added":["apps/api-fastify/src/modules/material-factory/shijie-generation.ts","apps/api-fastify/src/routes/shijie.ts","apps/api-fastify/test/shijie.integration.test.ts","apps/api-nestjs/src/material-factory/shijie-generation.ts","apps/api-nestjs/src/shijie/shijie.controller.ts","apps/api-nestjs/test/shijie.integration.test.ts","apps/web/src/components/material-factory/shijie/ShijieStudio.tsx","apps/web/src/components/material-factory/shijie/ShijieViewport.tsx","apps/web/src/components/material-factory/shijie/queries.ts","apps/web/src/components/material-factory/shijie/shijie.module.css","services/model-sidecar/test_shijie.py"],"removed":[],"modified":["apps/api-fastify/src/app.ts","apps/api-fastify/src/creative-worker.ts","apps/api-fastify/src/modules/creative-project/creative-project.service.ts","apps/api-fastify/src/modules/creative-project/creative-worker.runtime.ts","apps/api-fastify/src/modules/material-factory/material-sidecar.client.ts","apps/api-fastify/src/routes/creative-project.ts","apps/api-nestjs/src/creative-project/creative-project.controller.ts","apps/api-nestjs/src/creative-project/creative-project.service.ts","apps/api-nestjs/src/creative-project/creative-worker.runtime.ts","apps/api-nestjs/src/creative-worker.ts","apps/api-nestjs/src/material-factory/material-factory.module.ts","apps/api-nestjs/src/material-factory/material-sidecar.client.ts","apps/web/src/components/material-factory/ActivityLog.tsx","apps/web/src/components/material-factory/CreativeProjectBar.tsx","apps/web/src/components/material-factory/FactoryShell.tsx","apps/web/src/components/material-factory/PipelineFlow.tsx","apps/web/src/components/material-factory/StoryboardStudio.tsx","apps/web/src/lib/api.ts","apps/web/src/store/useFactoryStore.ts","apps/web/tsconfig.json","packages/contracts/src/creative-project.ts","packages/contracts/src/creative-queue-policy.ts","services/model-sidecar/main.py"]},{"id":"7db5bcf8b55567037883f700477c6295ee458222","message":"feat(shijie): add declarative domain, immutable versions and deterministic runtime\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/7db5bcf8b55567037883f700477c6295ee458222","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-09-06T08:16:34-07:00","added":["apps/api-fastify/prisma/migrations/20260906080000_shijie_workspaces/migration.sql","apps/api-nestjs/prisma/migrations/20260906080000_shijie_workspaces/migration.sql","packages/contracts/src/shijie.ts","packages/shijie-domain/package.json","packages/shijie-domain/src/domain.test.ts","packages/shijie-domain/src/index.ts","packages/shijie-domain/tsconfig.json","packages/shijie-runtime/package.json","packages/shijie-runtime/src/index.ts","packages/shijie-runtime/src/runtime.test.ts","packages/shijie-runtime/test/indoor.json","packages/shijie-runtime/tsconfig.json"],"removed":[],"modified":["apps/api-fastify/package.json","apps/api-fastify/prisma/schema.prisma","apps/api-nestjs/package.json","apps/api-nestjs/prisma/schema.prisma","apps/web/package.json","packages/contracts/src/index.ts","pnpm-lock.yaml"]},{"id":"9ca1f0b6cd87d6da5a26d7183bf06fd6bd1ee3ae","message":"docs(storyboard): 归档视界 V1 完整方案书\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/9ca1f0b6cd87d6da5a26d7183bf06fd6bd1ee3ae","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-09-06T06:48:55-07:00","added":["docs/governance/log/2026-09-06-shijie-proposal.md","docs/product/shijie-v1/视界V1完整方案书.docx","docs/product/shijie-v1/视界V1完整方案书.md","docs/product/shijie-v1/资源/运行链路.png"],"removed":[],"modified":["docs/README.md"]}],"total_commits":0,"head_commit":{"id":"fc554663851d45f888811fd92b1d92461abb2ef7","message":"docs(shijie): record source-bound acceptance and operating boundaries\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/fc554663851d45f888811fd92b1d92461abb2ef7","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-09-06T08:20:34-07:00","added":["docs/adr/0017-shijie-design-runtime.md","docs/governance/archive/adversarial-before-shijie-2026-09-06.md","docs/governance/log/2026-09-06-shijie-design.md","docs/shijie-design-runbook.md","reports/shijie-acceptance.latest.json","reports/shijie-design-acceptance.md","reports/shijie-live.latest.json","reports/shijie-performance.latest.json","reports/shijie-ui.latest.json"],"removed":[],"modified":["CLAUDE.md","docs/adr/README.md","docs/domain-glossary.md","docs/domain/owner-matrix.md","reports/adversarial-acceptance-audit.latest.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/storyboard-director-guard.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":285315,"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":5,"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-06T21:19:48+08:00","archived_at":"1970-01-01T08:00:00+08:00","permissions":{"admin":true,"push":true,"pull":true},"has_code":true,"has_issues":true,"internal_tracker":{"enable_time_tracker":true,"allow_only_contributors_to_track_time":true,"enable_issue_dependencies":true},"has_wiki":true,"has_pull_requests":true,"has_projects":true,"projects_mode":"all","has_releases":true,"has_packages":true,"has_actions":true,"ignore_whitespace_conflicts":false,"allow_merge_commits":true,"allow_rebase":true,"allow_rebase_explicit":true,"allow_squash_merge":true,"allow_fast_forward_only_merge":true,"allow_rebase_update":true,"allow_manual_merge":false,"autodetect_manual_merge":false,"default_delete_branch_after_merge":false,"default_merge_style":"merge","default_allow_maintainer_edit":true,"avatar_url":"","internal":false,"mirror_interval":"","object_format_name":"sha1","mirror_updated":"0001-01-01T00:00:00Z","topics":[],"licenses":[]},"pusher":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"sender":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"}}...
|
push
|
2
|
4
|
1788708149
|
1788708190
|
0
|
1788708149
|
1788708190
|
group: governance-${{ github.workflow }}-${{ githu group: governance-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: "true"
...
|
governance-governance.yml-refs/heads/main
|
1
|
Edit
Delete
|
|
23650
|
docs(release): bind integrated Shijie validation a docs(release): bind integrated Shijie validation and additive migration plan...
|
57
|
5
|
governance.yml
|
22
|
5
|
0
|
refs/heads/main
|
b5b17df4635fa722221afca479d61771915e3b60
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"fc554663851d45f888811fd92b1d92461abb2ef7","after":"b5b17df4635fa722221afca479d61771915e3b60","compare_url":"https://gitea.g-hi.com/luoanwu/image-generation/compare/fc554663851d45f888811fd92b1d92461abb2ef7...b5b17df4635fa722221afca479d61771915e3b60","commits":[{"id":"b5b17df4635fa722221afca479d61771915e3b60","message":"docs(release): bind integrated Shijie validation and additive migration plan\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/b5b17df4635fa722221afca479d61771915e3b60","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-09-06T08:47:27-07:00","added":["docs/governance/archive/adversarial-before-r15-2026-09-06.md","docs/governance/log/2026-09-06-shijie-deployment.md","docs/releases/2026-09-06-r15-migration-plan.md"],"removed":[],"modified":["CLAUDE.md","reports/adversarial-acceptance-audit.latest.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/shijie-acceptance.latest.json","reports/shijie-design-acceptance.md","reports/storyboard-director-guard.latest.json","reports/ui-acceptance.latest.json","reports/validation-source.latest.json"]},{"id":"55349e66f10502b684a251f5d7269fb4e703e2f7","message":"merge: retain final governance documentation in local release\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/55349e66f10502b684a251f5d7269fb4e703e2f7","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-09-06T08:37:41-07:00","added":["reports/governance-repair-2026-09-06/final-check.log.txt","reports/governance-repair-2026-09-06/final-deps.log.txt","reports/governance-repair-2026-09-06/final-runtime.log.txt","reports/governance-repair-2026-09-06/live-boundary.json"],"removed":[],"modified":["CLAUDE.md","docs/governance/log/2026-09-06-governance-repair.md","docs/releases/current.md","reports/adversarial-acceptance-audit.latest.md","reports/contract-consumers.latest.json","reports/dependency-audit.latest.json","reports/governance-docs.latest.json","reports/governance-repair-2026-09-06/README.md","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-acceptance.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/storyboard-director-guard.latest.json","reports/validation-source.latest.json"]},{"id":"83f3af2fe00f70a53bd80ed1cc42041c96a9f8a4","message":"fix(web): derive demo tenant at the trusted proxy boundary\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/83f3af2fe00f70a53bd80ed1cc42041c96a9f8a4","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-09-06T08:36:21-07:00","added":[],"removed":[],"modified":["apps/web/src/app/api/[...path]/route.ts"]},{"id":"2f524b8de9f7a51bbbea195b584f54abf229638a","message":"docs: complete final governance and ingress verification record\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/2f524b8de9f7a51bbbea195b584f54abf229638a","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-09-06T08:33:03-07:00","added":["reports/governance-repair-2026-09-06/final-check.log.txt","reports/governance-repair-2026-09-06/final-deps.log.txt","reports/governance-repair-2026-09-06/final-runtime.log.txt"],"removed":[],"modified":["CLAUDE.md","docs/governance/log/2026-09-06-governance-repair.md","docs/releases/current.md","reports/adversarial-acceptance-audit.latest.md","reports/contract-consumers.latest.json","reports/governance-docs.latest.json","reports/governance-repair-2026-09-06/README.md","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/validation-source.latest.json"]},{"id":"4975c1eb1ba29d6f2ca16ffc1ea96d724c1bd89b","message":"docs(governance): finalize verified ingress and source-bound repair evidence\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/4975c1eb1ba29d6f2ca16ffc1ea96d724c1bd89b","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-09-06T08:32:25-07:00","added":["reports/governance-repair-2026-09-06/live-boundary.json"],"removed":[],"modified":["CLAUDE.md","reports/adversarial-acceptance-audit.latest.md","reports/contract-consumers.latest.json","reports/dependency-audit.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-acceptance.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/storyboard-director-guard.latest.json","reports/validation-source.latest.json"]}],"total_commits":0,"head_commit":{"id":"b5b17df4635fa722221afca479d61771915e3b60","message":"docs(release): bind integrated Shijie validation and additive migration plan\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/b5b17df4635fa722221afca479d61771915e3b60","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-09-06T08:47:27-07:00","added":["docs/governance/archive/adversarial-before-r15-2026-09-06.md","docs/governance/log/2026-09-06-shijie-deployment.md","docs/releases/2026-09-06-r15-migration-plan.md"],"removed":[],"modified":["CLAUDE.md","reports/adversarial-acceptance-audit.latest.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/shijie-acceptance.latest.json","reports/shijie-design-acceptance.md","reports/storyboard-director-guard.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":286084,"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":5,"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-06T23:22: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
|
4
|
1788709754
|
1788709791
|
0
|
1788709752
|
1788709791
|
group: governance-${{ github.workflow }}-${{ githu group: governance-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: "true"
...
|
governance-governance.yml-refs/heads/main
|
1
|
Edit
Delete
|
|
23651
|
docs: 归档 2026-09-06 项目全面分析报告
|
57
|
5
|
governance.yml
|
23
|
5
|
0
|
refs/heads/main
|
0d31f4f01cdbf250d891121e9d402611861c992d
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"b5b17df4635fa722221afca479d61771915e3b60","after":"0d31f4f01cdbf250d891121e9d402611861c992d","compare_url":"https://gitea.g-hi.com/luoanwu/image-generation/compare/b5b17df4635fa722221afca479d61771915e3b60...0d31f4f01cdbf250d891121e9d402611861c992d","commits":[{"id":"0d31f4f01cdbf250d891121e9d402611861c992d","message":"docs: 归档 2026-09-06 项目全面分析报告\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/0d31f4f01cdbf250d891121e9d402611861c992d","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-09-06T08:51:26-07:00","added":["reports/project-deep-analysis-2026-09-06.md"],"removed":[],"modified":[]}],"total_commits":0,"head_commit":{"id":"0d31f4f01cdbf250d891121e9d402611861c992d","message":"docs: 归档 2026-09-06 项目全面分析报告\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/0d31f4f01cdbf250d891121e9d402611861c992d","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-09-06T08:51:26-07:00","added":["reports/project-deep-analysis-2026-09-06.md"],"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":286403,"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":5,"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-06T23:49:12+08:00","archived_at":"1970-01-01T08:00:00+08:00","permissions":{"admin":true,"push":true,"pull":true},"has_code":true,"has_issues":true,"internal_tracker":{"enable_time_tracker":true,"allow_only_contributors_to_track_time":true,"enable_issue_dependencies":true},"has_wiki":true,"has_pull_requests":true,"has_projects":true,"projects_mode":"all","has_releases":true,"has_packages":true,"has_actions":true,"ignore_whitespace_conflicts":false,"allow_merge_commits":true,"allow_rebase":true,"allow_rebase_explicit":true,"allow_squash_merge":true,"allow_fast_forward_only_merge":true,"allow_rebase_update":true,"allow_manual_merge":false,"autodetect_manual_merge":false,"default_delete_branch_after_merge":false,"default_merge_style":"merge","default_allow_maintainer_edit":true,"avatar_url":"","internal":false,"mirror_interval":"","object_format_name":"sha1","mirror_updated":"0001-01-01T00:00:00Z","topics":[],"licenses":[]},"pusher":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"sender":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"}}...
|
push
|
2
|
4
|
1788709976
|
1788710013
|
0
|
1788709975
|
1788710013
|
group: governance-${{ github.workflow }}-${{ githu group: governance-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: "true"
...
|
governance-governance.yml-refs/heads/main
|
1
|
Edit
Delete
|
|
23652
|
merge: preserve project analysis alongside release merge: preserve project analysis alongside release record...
|
57
|
5
|
governance.yml
|
24
|
5
|
0
|
refs/heads/main
|
0f6e72f043a9a62e02acbaa12d7f6085e110025c
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"0d31f4f01cdbf250d891121e9d402611861c992d","after":"0f6e72f043a9a62e02acbaa12d7f6085e110025c","compare_url":"https://gitea.g-hi.com/luoanwu/image-generation/compare/0d31f4f01cdbf250d891121e9d402611861c992d...0f6e72f043a9a62e02acbaa12d7f6085e110025c","commits":[{"id":"0f6e72f043a9a62e02acbaa12d7f6085e110025c","message":"merge: preserve project analysis alongside release record\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/0f6e72f043a9a62e02acbaa12d7f6085e110025c","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-09-06T08:53:31-07:00","added":["reports/project-deep-analysis-2026-09-06.md"],"removed":[],"modified":[]},{"id":"5aaadde0949bbfb191b3adbc01d88576cbc6541a","message":"docs(release): record verified local r15 deployment\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/5aaadde0949bbfb191b3adbc01d88576cbc6541a","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-09-06T08:52:33-07:00","added":["docs/releases/2026-09-06-r15.md"],"removed":[],"modified":["CLAUDE.md","docs/governance/log/2026-09-06-shijie-deployment.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/validation-source.latest.json"]}],"total_commits":0,"head_commit":{"id":"0f6e72f043a9a62e02acbaa12d7f6085e110025c","message":"merge: preserve project analysis alongside release record\n","url":"https://gitea.g-hi.com/luoanwu/image-generation/commit/0f6e72f043a9a62e02acbaa12d7f6085e110025c","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-09-06T08:53:31-07:00","added":["reports/project-deep-analysis-2026-09-06.md"],"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":286432,"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":5,"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-06T23:52: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
|
1788710031
|
1788710069
|
0
|
1788710031
|
1788710069
|
group: governance-${{ github.workflow }}-${{ githu group: governance-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: "true"
...
|
governance-governance.yml-refs/heads/main
|
1
|
Edit
Delete
|