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