| event_payload |
{"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"}}... |