|
28163
|
5
|
5
|
5
|
57
|
0
|
0
|
refs/heads/main
|
0
|
{"Commits":[{"Sha1":"a08628dd4 {"Commits":[{"Sha1":"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","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-09-04T21:34:23-07:00"},{"Sha1":"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","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-09-04T20:34:22-07:00"},{"Sha1":"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","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-09-04T20:27:57-07:00"}],"HeadCommit":{"Sha1":"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","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-09-04T21:34:23-07:00"},"CompareURL":"luoanwu/image-generation/compare/a228915e1a104c81591ac55a929061b082e8d7e6...a08628dd493b9ddcb20d9e326758d64dc36a0056","Len":3}...
|
1788582875
|
Edit
Delete
|
|
28162
|
5
|
5
|
5
|
57
|
0
|
0
|
refs/heads/main
|
0
|
{"Commits":[{"Sha1":"a228915e1 {"Commits":[{"Sha1":"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","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-09-04T08:32:53-07:00"},{"Sha1":"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","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-09-04T08:32:53-07:00"},{"Sha1":"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","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-09-04T08:15:27-07:00"},{"Sha1":"acf98e305c9119899658833425da4ec0e240eb81","Message":"fix(deploy): build public file declarations in containers\n\nCo-authored-by: Qwen-Coder \u003cqwen-coder@alibabacloud.com\u003e\n","AuthorEmail":"hlj@g-hi.com","AuthorName":"huangliujian","CommitterEmail":"hlj@g-hi.com","CommitterName":"huangliujian","Timestamp":"2026-09-01T12:37:46+08:00"},{"Sha1":"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","AuthorEmail":"hlj@g-hi.com","AuthorName":"huangliujian","CommitterEmail":"hlj@g-hi.com","CommitterName":"huangliujian","Timestamp":"2026-09-01T11:13:05+08:00"}],"HeadCommit":{"Sha1":"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","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-09-04T08:32:53-07:00"},"CompareURL":"luoanwu/image-generation/compare/b3a5c0dc690884729878b7f4cce1adbad046be14...a228915e1a104c81591ac55a929061b082e8d7e6","Len":5}...
|
1788535982
|
Edit
Delete
|
|
26991
|
5
|
5
|
7
|
57
|
0
|
0
|
refs/heads/hljTest
|
0
|
{"Commits":[{"Sha1":"acf98e305 {"Commits":[{"Sha1":"acf98e305c9119899658833425da4ec0e240eb81","Message":"fix(deploy): build public file declarations in containers\n\nCo-authored-by: Qwen-Coder \u003cqwen-coder@alibabacloud.com\u003e\n","AuthorEmail":"hlj@g-hi.com","AuthorName":"huangliujian","CommitterEmail":"hlj@g-hi.com","CommitterName":"huangliujian","Timestamp":"2026-09-01T12:37:46+08:00"},{"Sha1":"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","AuthorEmail":"hlj@g-hi.com","AuthorName":"huangliujian","CommitterEmail":"hlj@g-hi.com","CommitterName":"huangliujian","Timestamp":"2026-09-01T11:13:05+08:00"},{"Sha1":"c16f03b05ec70a53ac99f27dc7901ad3ad99a45a","Message":"feat: add governed public file delivery\n","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-08-31T19:41:05-07:00"},{"Sha1":"0c21eecc828c12daebc00845c14482c3b9d58823","Message":"feat(web): improve end-to-end creation UX\n","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-08-28T19:18:11-07:00"}],"HeadCommit":{"Sha1":"acf98e305c9119899658833425da4ec0e240eb81","Message":"fix(deploy): build public file declarations in containers\n\nCo-authored-by: Qwen-Coder \u003cqwen-coder@alibabacloud.com\u003e\n","AuthorEmail":"hlj@g-hi.com","AuthorName":"huangliujian","CommitterEmail":"hlj@g-hi.com","CommitterName":"huangliujian","Timestamp":"2026-09-01T12:37:46+08:00"},"CompareURL":"luoanwu/image-generation/compare/dc10d6356138564bf70fcfa6370ba66d99f0b0d7...acf98e305c9119899658833425da4ec0e240eb81","Len":4}...
|
1788237491
|
Edit
Delete
|
|
26986
|
5
|
5
|
5
|
57
|
0
|
0
|
refs/heads/main
|
0
|
{"Commits":[{"Sha1":"b3a5c0dc6 {"Commits":[{"Sha1":"b3a5c0dc690884729878b7f4cce1adbad046be14","Message":"merge: integrate all remaining branches\n","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-08-31T20:19:35-07:00"},{"Sha1":"dc10d6356138564bf70fcfa6370ba66d99f0b0d7","Message":"feat(material): 完成正式生产与导演交付链路\n\nCo-authored-by: Qwen-Coder \u003cqwen-coder@alibabacloud.com\u003e\n","AuthorEmail":"hlj@g-hi.com","AuthorName":"huangliujian","CommitterEmail":"hlj@g-hi.com","CommitterName":"huangliujian","Timestamp":"2026-08-27T14:12:06+08:00"},{"Sha1":"5fbcad0bceea9e81914ae6b7e8bfb05265845598","Message":"merge(main): 合并拍摄脚本与云端渲染能力\n\nCo-authored-by: Qwen-Coder \u003cqwen-coder@alibabacloud.com\u003e\n","AuthorEmail":"hlj@g-hi.com","AuthorName":"huangliujian","CommitterEmail":"hlj@g-hi.com","CommitterName":"huangliujian","Timestamp":"2026-08-18T16:58:46+08:00"},{"Sha1":"549ea31448ec1e62e8f10039ed3f8c7d384e07f8","Message":"feat(material-factory): 接入阿里云百炼真实生成链路\n\nCo-authored-by: Qwen-Coder \u003cqwen-coder@alibabacloud.com\u003e\n","AuthorEmail":"hlj@g-hi.com","AuthorName":"huangliujian","CommitterEmail":"hlj@g-hi.com","CommitterName":"huangliujian","Timestamp":"2026-08-17T17:34:04+08:00"}],"HeadCommit":{"Sha1":"b3a5c0dc690884729878b7f4cce1adbad046be14","Message":"merge: integrate all remaining branches\n","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-08-31T20:19:35-07:00"},"CompareURL":"luoanwu/image-generation/compare/c16f03b05ec70a53ac99f27dc7901ad3ad99a45a...b3a5c0dc690884729878b7f4cce1adbad046be14","Len":4}...
|
1788232799
|
Edit
Delete
|
|
26966
|
5
|
5
|
5
|
57
|
0
|
0
|
refs/heads/main
|
0
|
{"Commits":[{"Sha1":"c16f03b05 {"Commits":[{"Sha1":"c16f03b05ec70a53ac99f27dc7901ad3ad99a45a","Message":"feat: add governed public file delivery\n","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-08-31T19:41:05-07:00"}],"HeadCommit":{"Sha1":"c16f03b05ec70a53ac99f27dc7901ad3ad99a45a","Message":"feat: add governed public file delivery\n","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-08-31T19:41:05-07:00"},"CompareURL":"luoanwu/image-generation/compare/0c21eecc828c12daebc00845c14482c3b9d58823...c16f03b05ec70a53ac99f27dc7901ad3ad99a45a","Len":1}...
|
1788230491
|
Edit
Delete
|
|
26755
|
5
|
5
|
5
|
57
|
0
|
0
|
refs/heads/main
|
0
|
{"Commits":[{"Sha1":"0c21eecc8 {"Commits":[{"Sha1":"0c21eecc828c12daebc00845c14482c3b9d58823","Message":"feat(web): improve end-to-end creation UX\n","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-08-28T19:18:11-07:00"}],"HeadCommit":{"Sha1":"0c21eecc828c12daebc00845c14482c3b9d58823","Message":"feat(web): improve end-to-end creation UX\n","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-08-28T19:18:11-07:00"},"CompareURL":"luoanwu/image-generation/compare/cf66be23009de5ecbefad6083c173eb1df3f4c8b...0c21eecc828c12daebc00845c14482c3b9d58823","Len":1}...
|
1787969911
|
Edit
Delete
|
|
26508
|
5
|
5
|
7
|
57
|
0
|
0
|
refs/heads/hljTest
|
0
|
{"Commits":[{"Sha1":"dc10d6356 {"Commits":[{"Sha1":"dc10d6356138564bf70fcfa6370ba66d99f0b0d7","Message":"feat(material): 完成正式生产与导演交付链路\n\nCo-authored-by: Qwen-Coder \u003cqwen-coder@alibabacloud.com\u003e\n","AuthorEmail":"hlj@g-hi.com","AuthorName":"huangliujian","CommitterEmail":"hlj@g-hi.com","CommitterName":"huangliujian","Timestamp":"2026-08-27T14:12:06+08:00"},{"Sha1":"cf66be23009de5ecbefad6083c173eb1df3f4c8b","Message":"Refresh UI acceptance evidence\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-08-25T17:52:24-07:00"},{"Sha1":"8e23fd115535dda184b584cb62396fa8286ef383","Message":"feat(governance): harden formal production trust boundaries\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-08-25T17:46:37-07:00"},{"Sha1":"58ffde2d1e2a662a18b4fadf901b0f6f5233f30a","Message":"feat: 完善分镜导演终审与对抗治理\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-08-25T11:55:23-07:00"},{"Sha1":"f094101357dc511e450e0e18fab5c91baaed9865","Message":"fix(governance): make source fingerprints commit-stable\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-08-25T09:40:28-07:00"}],"HeadCommit":{"Sha1":"dc10d6356138564bf70fcfa6370ba66d99f0b0d7","Message":"feat(material): 完成正式生产与导演交付链路\n\nCo-authored-by: Qwen-Coder \u003cqwen-coder@alibabacloud.com\u003e\n","AuthorEmail":"hlj@g-hi.com","AuthorName":"huangliujian","CommitterEmail":"hlj@g-hi.com","CommitterName":"huangliujian","Timestamp":"2026-08-27T14:12:06+08:00"},"CompareURL":"luoanwu/image-generation/compare/5fbcad0bceea9e81914ae6b7e8bfb05265845598...dc10d6356138564bf70fcfa6370ba66d99f0b0d7","Len":26}...
|
1787813227
|
Edit
Delete
|
|
25941
|
5
|
5
|
5
|
57
|
0
|
0
|
refs/heads/main
|
0
|
{"Commits":[{"Sha1":"cf66be230 {"Commits":[{"Sha1":"cf66be23009de5ecbefad6083c173eb1df3f4c8b","Message":"Refresh UI acceptance evidence\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-08-25T17:52:24-07:00"}],"HeadCommit":{"Sha1":"cf66be23009de5ecbefad6083c173eb1df3f4c8b","Message":"Refresh UI acceptance evidence\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-08-25T17:52:24-07:00"},"CompareURL":"luoanwu/image-generation/compare/8e23fd115535dda184b584cb62396fa8286ef383...cf66be23009de5ecbefad6083c173eb1df3f4c8b","Len":1}...
|
1787705552
|
Edit
Delete
|
|
25937
|
5
|
5
|
5
|
57
|
0
|
0
|
refs/heads/main
|
0
|
{"Commits":[{"Sha1":"8e23fd115 {"Commits":[{"Sha1":"8e23fd115535dda184b584cb62396fa8286ef383","Message":"feat(governance): harden formal production trust boundaries\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-08-25T17:46:37-07:00"},{"Sha1":"58ffde2d1e2a662a18b4fadf901b0f6f5233f30a","Message":"feat: 完善分镜导演终审与对抗治理\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-08-25T11:55:23-07:00"}],"HeadCommit":{"Sha1":"8e23fd115535dda184b584cb62396fa8286ef383","Message":"feat(governance): harden formal production trust boundaries\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-08-25T17:46:37-07:00"},"CompareURL":"luoanwu/image-generation/compare/f094101357dc511e450e0e18fab5c91baaed9865...8e23fd115535dda184b584cb62396fa8286ef383","Len":2}...
|
1787705225
|
Edit
Delete
|
|
25936
|
5
|
5
|
5
|
57
|
0
|
0
|
refs/heads/main
|
0
|
{"Commits":[{"Sha1":"f09410135 {"Commits":[{"Sha1":"f094101357dc511e450e0e18fab5c91baaed9865","Message":"fix(governance): make source fingerprints commit-stable\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-08-25T09:40:28-07:00"}],"HeadCommit":{"Sha1":"f094101357dc511e450e0e18fab5c91baaed9865","Message":"fix(governance): make source fingerprints commit-stable\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-08-25T09:40:28-07:00"},"CompareURL":"luoanwu/image-generation/compare/7a7e42422a19f6ad4c86d4cd320119a7fc912885...f094101357dc511e450e0e18fab5c91baaed9865","Len":1}...
|
1787676046
|
Edit
Delete
|
|
25935
|
5
|
5
|
5
|
57
|
0
|
0
|
refs/heads/main
|
0
|
{"Commits":[{"Sha1":"7a7e42422 {"Commits":[{"Sha1":"7a7e42422a19f6ad4c86d4cd320119a7fc912885","Message":"feat(image-edit): harden masked editing acceptance\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-08-25T09:34:04-07:00"}],"HeadCommit":{"Sha1":"7a7e42422a19f6ad4c86d4cd320119a7fc912885","Message":"feat(image-edit): harden masked editing acceptance\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-08-25T09:34:04-07:00"},"CompareURL":"luoanwu/image-generation/compare/ba48645a4237735976c13184c3aac435bc868949...7a7e42422a19f6ad4c86d4cd320119a7fc912885","Len":1}...
|
1787675666
|
Edit
Delete
|
|
25514
|
5
|
5
|
5
|
57
|
0
|
0
|
refs/heads/main
|
0
|
{"Commits":[{"Sha1":"ba48645a4 {"Commits":[{"Sha1":"ba48645a4237735976c13184c3aac435bc868949","Message":"feat(marketing): add HI Atelier 4K poster series\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-08-24T07:05:38-07:00"}],"HeadCommit":{"Sha1":"ba48645a4237735976c13184c3aac435bc868949","Message":"feat(marketing): add HI Atelier 4K poster series\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-08-24T07:05:38-07:00"},"CompareURL":"luoanwu/image-generation/compare/43fb473a0f44228eb0ac2dc41e920e3e5ab523b5...ba48645a4237735976c13184c3aac435bc868949","Len":1}...
|
1787581007
|
Edit
Delete
|
|
25432
|
5
|
5
|
5
|
57
|
0
|
0
|
refs/heads/main
|
0
|
{"Commits":[{"Sha1":"43fb473a0 {"Commits":[{"Sha1":"43fb473a0f44228eb0ac2dc41e920e3e5ab523b5","Message":"Refine image generation modes and custom output sizing\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-08-24T02:19:22-07:00"}],"HeadCommit":{"Sha1":"43fb473a0f44228eb0ac2dc41e920e3e5ab523b5","Message":"Refine image generation modes and custom output sizing\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-08-24T02:19:22-07:00"},"CompareURL":"luoanwu/image-generation/compare/e759f5e4509e93cc4968259cc6d6a64bc73c09f1...43fb473a0f44228eb0ac2dc41e920e3e5ab523b5","Len":1}...
|
1787563171
|
Edit
Delete
|
|
25375
|
5
|
5
|
5
|
57
|
0
|
0
|
refs/heads/main
|
0
|
{"Commits":[{"Sha1":"e759f5e45 {"Commits":[{"Sha1":"e759f5e4509e93cc4968259cc6d6a64bc73c09f1","Message":"feat(studio): connect script storyboard and video workflow\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-08-24T01:26:47-07:00"},{"Sha1":"553239d8af8a5f7a56988fa913deaecd5f154121","Message":"feat(studio): complete live Bailian production workflow\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-08-23T19:25:55-07:00"},{"Sha1":"69d9525d1e38cdb9da1db02f2e25411d2bd4b891","Message":"feat(models): route image generation through Bailian Wan 2.7 Pro\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-08-23T17:25:44-07:00"},{"Sha1":"1bc728c529ae21297108ec097f939ce72e77c3c5","Message":"feat(storyboard): persist immutable project history\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-08-23T11:49:04-07:00"},{"Sha1":"753d41978517db6031c10afef2a9a1897f6f7481","Message":"fix(models): restore OCR inference and reject LFS pointers\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-08-23T11:35:43-07:00"}],"HeadCommit":{"Sha1":"e759f5e4509e93cc4968259cc6d6a64bc73c09f1","Message":"feat(studio): connect script storyboard and video workflow\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-08-24T01:26:47-07:00"},"CompareURL":"luoanwu/image-generation/compare/eb6483fa7aadc8d2d4e715274c2519f67005e135...e759f5e4509e93cc4968259cc6d6a64bc73c09f1","Len":18}...
|
1787560925
|
Edit
Delete
|
|
23992
|
5
|
5
|
7
|
57
|
0
|
0
|
refs/heads/hljTest
|
0
|
{"Commits":[{"Sha1":"5fbcad0bc {"Commits":[{"Sha1":"5fbcad0bceea9e81914ae6b7e8bfb05265845598","Message":"merge(main): 合并拍摄脚本与云端渲染能力\n\nCo-authored-by: Qwen-Coder \u003cqwen-coder@alibabacloud.com\u003e\n","AuthorEmail":"hlj@g-hi.com","AuthorName":"huangliujian","CommitterEmail":"hlj@g-hi.com","CommitterName":"huangliujian","Timestamp":"2026-08-18T16:58:46+08:00"},{"Sha1":"eb6483fa7aadc8d2d4e715274c2519f67005e135","Message":"Merge pull request 'feat(script): 接入大语言模型——歌词/文案 → 拍摄脚本 → 角色确认 → 定格图' (#3) from feat/llm-shooting-script into main\n\nReviewed-on: https://gitea.g-hi.com/luoanwu/image-generation/pulls/3\n","AuthorEmail":"law@g-hi.com","AuthorName":"luoanwu","CommitterEmail":"law@g-hi.com","CommitterName":"luoanwu","Timestamp":"2026-08-18T14:00:06+08:00"},{"Sha1":"b9d34cfb7e777377776325d7b2e73f1a15ff19e8","Message":"feat(script): 分镜可编辑、定格图可微调可回滚\n\nC10 交付后脚本是只读的——LLM 出完就不能改,定格图也只能整张重出。本轮补齐「改」。\n\n分镜编辑\n- 字段编辑 + 增删 + 重排;镜号唯一约束下走两阶段负号位移,1..N 恒连续不撞号\n- 重排要求全量顺序,拒绝增量语义歧义\n- 改角色 appearance 强制退回 DRAFT 并解绑参考图(描述与图不能各说各话);只改 name 不解绑\n- ARCHIVED / ROLES_LOCKED 从装饰性状态变成真实写约束\n\n定格图调整\n- 三模式:FROM_ROLES 从角色重出 / ADJUST 在当前图上按指令迭代微调 / VARIATION 换种子出候选\n- buildStillAdjustInstruction 把「只改这一点、构图与角色都别动」写死进指令\n (迭代微调最常见的失败是模型顺手重画整张)\n- 历史版本表 script_still_versions:每次出图/微调/换版追加一版,可回滚\n\n失效判据(契约单源,双端同源消费)\n- computeShotFingerprint 把所有影响成图的输入拼成规范串——刻意不哈希:\n 碰撞意味着「该失效却没标失效」,那是静默错误;规范串几百字节可肉眼比对\n- isShotStillStale 据此判断;策略是标记失效不自动删图\n (删掉人已满意的图是不可逆破坏,决定权留给人)\n\n三处刻意的「不静默」\n1. ADJUST 无底图 → NO_STILL_TO_ADJUST 明确报错,不悄悄改成整张重出\n2. 回滚连该版本的 fingerprint 一起还原,否则回滚回来的旧图会被误判成新鲜的\n3. 指纹用规范串而非哈希\n\n验收\n- contracts 新增 13 条失效判据单测(61 tests 全绿)\n- 双后端 acceptance 各 21 passed + 1 skipped-live(原 8)\n- pnpm check / check:runtime / check:script 均 exit 0;own-tests floor 14→15\n- 浏览器实测:过期横幅、编辑表单预填真实值、UI 改动落库并发 material.script.shot.updated、\n 新增与上移后镜号仍连续且未撞唯一约束\n\n诚实边界不变:liveLlmAsserted 仍为 false(本机无 DASHSCOPE_API_KEY);\ncheck:inference 仍因权重是 git-lfs 存根而红,与本轮无关。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-08-17T22:52:19-07:00"},{"Sha1":"4c34ff4ff22ff5aab34e0492fd7fef9c2c989b02","Message":"feat(script): 接入大语言模型——歌词/文案 → 拍摄脚本 → 角色确认 → 定格图\n\n本仓此前零 LLM 接入(全仓只有 DashScope 的图像调用),「歌词成图」屏是纯前端\n原型(procedural.ts 画色块 + setTimeout 假装推理,不落库不接后端)。本轮把这条\n动线升级为真链路 + 真持久化。\n\n契约单源(packages/contracts/src/script.ts)\n- 角色确认状态机 scriptRoleMachine、脚本状态机 shootingScriptMachine\n- 景别/运镜用枚举而非自由文本:LLM 一旦自由发挥,下游 prompt 与统计就没有稳定口径\n- scriptDraftSchema 是 LLM 输出的唯一判据;prompt 构造器单源,两后端禁止各拼一份\n- evaluateRoleReadiness:本域核心不变量,双后端硬拦截 + 前端同源即时反馈\n- 前端私有的 findBannedHits 上收为 contracts 的 findBannedWords(后端也要逐镜标记,\n 两份并行就是双真源)\n\nLLM 不是权威\n- sidecar /v1/script 只保证「返回长得像脚本的 JSON」,两个后端各自再 parse 一次才落库\n- 模型引用未声明角色键 → 422 SCRIPT_ROLE_KEYS_DANGLING(幻觉护栏)\n- 连续给不出合法 JSON → 502 LLM_OUTPUT_UNPARSEABLE,绝不返回占位脚本\n- parse_json_object 只剥围栏、截首尾花括号,不做字段猜测或补齐\n\n角色必须先确认才允许出定格图\n- 判据 = status CONFIRMED 且有 referenceAssetId(没有参考图就没有一致性锚点)\n- CONFIRMED --reset--\u003e DRAFT 会解除参考图绑定:人确认的是那一张图,不是那个名字\n- 出图时按 roleKeys 顺序喂参考图,与指令里「第 N 张参考图」编号严格对齐\n\n写链纪律与物料链路同构:tenant 全覆盖、updateMany 带状态前置条件(0 行即 409)、\n终态与 outbox 同 tx、能力不可用 → job BLOCKED + 诚实 reason,禁止静默降级。\n品牌准绳只逐镜标记不拒绝整份脚本(脚本属创作内容),硬拦截点在出定格图这个受控出口,\n显式放行需带参数且落审计事件。\n\n顺带修掉三个既有缺陷\n1. 合并遗留:sidecarEdit 用 sidecarGenerateResponseSchema 校验响应(要求 steps/\n loadSeconds),但 run_hosted_edit 两个字段都不返回 —— 托管改字会在客户端边界\n 直接 Zod 抛错(本地路径返回这两个字段,所以一直没暴露)\n2. check-migrations 的列检查只扫 CREATE TABLE,凡 ALTER TABLE ADD COLUMN 追加的\n @map 列一律误报 drift(此前唯一的 ALTER 列 brand_kits.profile 没 @map 才没现形)\n3. ktv-poster-master.png 血统在合并两侧打架,git log --all 证明该文件自初始化提交后\n 从未重新生成,取诚实标注 prototype-demo-master\n\n验收\n- 新增 pnpm check:script → reports/script-acceptance.latest.json(双后端各 8 passed\n + 1 skipped-live);own-tests floor 10→14,棘轮已收紧\n- pnpm check / check:runtime 均 exit 0\n- 浏览器实测:未确认角色 → 按钮 disabled 且提示缺哪个角色;绕过前端直打后端 → 422\n ROLE_NOT_CONFIRMED;跨租户 404;无凭证生成 → UI 显示 503 且不产生占位脚本\n\n诚实边界(已写入 CLAUDE.md)\n- liveLlmAsserted=false:本机无 DASHSCOPE_API_KEY,真调 LLM 的 live 断言被 skip,\n 门禁成立 ≠ LLM 出脚本已验证\n- check:inference 在本机为 failed(动手前即为 failed):本工作副本的模型权重是\n git-lfs 指针存根,非本轮改动导致;基线表该行已从 GREEN 改为 OPEN\n- ui-acceptance 报告早于本屏,未覆盖 script 屏,已标 STALE\n- 新开缺口 G16(LLM 只做结构校验、无事实性校验)、G17(同步 HTTP 挂分钟级推理 /\n render_jobs 索引非 CONCURRENTLY / 本地多图 I2I 未在本机验证)\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-08-17T22:04:48-07:00"},{"Sha1":"9af0a397ce69cf03623a495ee3ef49943598f5a4","Message":"Merge origin/main: 双推理路线合流为「本地优先 / 托管兜底」能力路由\n\n远端 PR #1(本地权重真跑,面向 128 GiB 主机)与本地 a3b0b41(托管 DashScope\nQwen-Image 3.0,面向 24 GiB 主机)各自独立实现了改字,在 /v1/edit 与双后端\nrender-pipeline 上正面冲突——同一事实两份运行时口径(违治理原则 1)。\n本次不做二选一,合流为一条按能力路由的通路。\n\ncontracts(路由单源)\n- 新增 RENDER_KIND_FALLBACK_CAPABILITIES + resolveRenderCapabilityKeys():\n 主能力=本地 qwen-image-edit,兜底=托管 qwen-image-3-api,双后端禁止各自\n 展开再拼一遍降级逻辑\n- 修掉三方自动合并留下的语义漂移:RENDER_KIND_CAPABILITIES 曾被并成\n 「改字 kind 只映射托管」,与本地优先矛盾\n- 新增 LOCAL_MODEL_KINDS;MATERIAL_MODEL_ROUTING 改字标签体现双通路\n- 契约测试同步断言新语义(主/兜底/解析顺序/无兜底 kind)\n\nsidecar\n- run_edit 改为路由版:本地可跑优先走本地(不外传底图、不产生云端调用费),\n 本地不可用才降到托管;显式传 modelKey 则锁定该条路径不做隐式回退\n- HEAD 的托管实现降为 run_hosted_edit() 分支,EditRequest / run_edit 各唯一\n- 两条都不可用 → 503 NO_EDIT_BACKEND_AVAILABLE 且同时带上两侧 capability,\n 禁止静默降级\n\n双后端\n- sidecarEdit 的 modelKey 由硬编码 'qwen-image-edit' 改为路由解析结果,\n 否则小内存主机上托管兜底永远走不到\n- BLOCKED reason 逐条列出每个候选能力为何不可用\n- 清理两处悬空的 hostedEdit 引用(声明在冲突块、使用在自动合并区,\n 靠 typecheck 兜住)——该分支只在 procedural 路径可达,直接调 sidecarRender\n\n前端\n- 血统标注按证据判定:ktv-poster-master.png 由初始化提交 fc2ce50 引入且\n 远端从未改动,远端将其标为「Qwen-Image-2512 产物」属误标,保留\n 「原型演示静态素材」口径(P3:不冒充模型产物)\n- constants.ts 模型口径一律从 MATERIAL_MODEL_ROUTING 派生,不留第二真源\n\n验收(诚实记录)\n- pnpm check 全项 exit 0\n- pnpm check:runtime 真实 DB+Redis 通过(迁移 deploy/status + 双后端测试)\n- pnpm check:inference 在本机失败:权重实体已删除、仅剩 git-lfs 指针,\n sidecar-health 阶段诚实报 PaddleOCR 权重不完整。属环境限制非代码缺陷,\n 已记为 G16,未因此放宽任何断言\n\nCLAUDE.md 回灌:C10 闭环记录、G14 合并两侧真实证据、G16 新增\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-08-17T21:19:49-07:00"}],"HeadCommit":{"Sha1":"5fbcad0bceea9e81914ae6b7e8bfb05265845598","Message":"merge(main): 合并拍摄脚本与云端渲染能力\n\nCo-authored-by: Qwen-Coder \u003cqwen-coder@alibabacloud.com\u003e\n","AuthorEmail":"hlj@g-hi.com","AuthorName":"huangliujian","CommitterEmail":"hlj@g-hi.com","CommitterName":"huangliujian","Timestamp":"2026-08-18T16:58:46+08:00"},"CompareURL":"luoanwu/image-generation/compare/549ea31448ec1e62e8f10039ed3f8c7d384e07f8...5fbcad0bceea9e81914ae6b7e8bfb05265845598","Len":7}...
|
1787043527
|
Edit
Delete
|
|
23828
|
5
|
5
|
5
|
57
|
0
|
0
|
refs/heads/main
|
0
|
{"Commits":[{"Sha1":"eb6483fa7 {"Commits":[{"Sha1":"eb6483fa7aadc8d2d4e715274c2519f67005e135","Message":"Merge pull request 'feat(script): 接入大语言模型——歌词/文案 → 拍摄脚本 → 角色确认 → 定格图' (#3) from feat/llm-shooting-script into main\n\nReviewed-on: https://gitea.g-hi.com/luoanwu/image-generation/pulls/3\n","AuthorEmail":"law@g-hi.com","AuthorName":"luoanwu","CommitterEmail":"law@g-hi.com","CommitterName":"luoanwu","Timestamp":"2026-08-18T14:00:06+08:00"},{"Sha1":"b9d34cfb7e777377776325d7b2e73f1a15ff19e8","Message":"feat(script): 分镜可编辑、定格图可微调可回滚\n\nC10 交付后脚本是只读的——LLM 出完就不能改,定格图也只能整张重出。本轮补齐「改」。\n\n分镜编辑\n- 字段编辑 + 增删 + 重排;镜号唯一约束下走两阶段负号位移,1..N 恒连续不撞号\n- 重排要求全量顺序,拒绝增量语义歧义\n- 改角色 appearance 强制退回 DRAFT 并解绑参考图(描述与图不能各说各话);只改 name 不解绑\n- ARCHIVED / ROLES_LOCKED 从装饰性状态变成真实写约束\n\n定格图调整\n- 三模式:FROM_ROLES 从角色重出 / ADJUST 在当前图上按指令迭代微调 / VARIATION 换种子出候选\n- buildStillAdjustInstruction 把「只改这一点、构图与角色都别动」写死进指令\n (迭代微调最常见的失败是模型顺手重画整张)\n- 历史版本表 script_still_versions:每次出图/微调/换版追加一版,可回滚\n\n失效判据(契约单源,双端同源消费)\n- computeShotFingerprint 把所有影响成图的输入拼成规范串——刻意不哈希:\n 碰撞意味着「该失效却没标失效」,那是静默错误;规范串几百字节可肉眼比对\n- isShotStillStale 据此判断;策略是标记失效不自动删图\n (删掉人已满意的图是不可逆破坏,决定权留给人)\n\n三处刻意的「不静默」\n1. ADJUST 无底图 → NO_STILL_TO_ADJUST 明确报错,不悄悄改成整张重出\n2. 回滚连该版本的 fingerprint 一起还原,否则回滚回来的旧图会被误判成新鲜的\n3. 指纹用规范串而非哈希\n\n验收\n- contracts 新增 13 条失效判据单测(61 tests 全绿)\n- 双后端 acceptance 各 21 passed + 1 skipped-live(原 8)\n- pnpm check / check:runtime / check:script 均 exit 0;own-tests floor 14→15\n- 浏览器实测:过期横幅、编辑表单预填真实值、UI 改动落库并发 material.script.shot.updated、\n 新增与上移后镜号仍连续且未撞唯一约束\n\n诚实边界不变:liveLlmAsserted 仍为 false(本机无 DASHSCOPE_API_KEY);\ncheck:inference 仍因权重是 git-lfs 存根而红,与本轮无关。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-08-17T22:52:19-07:00"},{"Sha1":"4c34ff4ff22ff5aab34e0492fd7fef9c2c989b02","Message":"feat(script): 接入大语言模型——歌词/文案 → 拍摄脚本 → 角色确认 → 定格图\n\n本仓此前零 LLM 接入(全仓只有 DashScope 的图像调用),「歌词成图」屏是纯前端\n原型(procedural.ts 画色块 + setTimeout 假装推理,不落库不接后端)。本轮把这条\n动线升级为真链路 + 真持久化。\n\n契约单源(packages/contracts/src/script.ts)\n- 角色确认状态机 scriptRoleMachine、脚本状态机 shootingScriptMachine\n- 景别/运镜用枚举而非自由文本:LLM 一旦自由发挥,下游 prompt 与统计就没有稳定口径\n- scriptDraftSchema 是 LLM 输出的唯一判据;prompt 构造器单源,两后端禁止各拼一份\n- evaluateRoleReadiness:本域核心不变量,双后端硬拦截 + 前端同源即时反馈\n- 前端私有的 findBannedHits 上收为 contracts 的 findBannedWords(后端也要逐镜标记,\n 两份并行就是双真源)\n\nLLM 不是权威\n- sidecar /v1/script 只保证「返回长得像脚本的 JSON」,两个后端各自再 parse 一次才落库\n- 模型引用未声明角色键 → 422 SCRIPT_ROLE_KEYS_DANGLING(幻觉护栏)\n- 连续给不出合法 JSON → 502 LLM_OUTPUT_UNPARSEABLE,绝不返回占位脚本\n- parse_json_object 只剥围栏、截首尾花括号,不做字段猜测或补齐\n\n角色必须先确认才允许出定格图\n- 判据 = status CONFIRMED 且有 referenceAssetId(没有参考图就没有一致性锚点)\n- CONFIRMED --reset--\u003e DRAFT 会解除参考图绑定:人确认的是那一张图,不是那个名字\n- 出图时按 roleKeys 顺序喂参考图,与指令里「第 N 张参考图」编号严格对齐\n\n写链纪律与物料链路同构:tenant 全覆盖、updateMany 带状态前置条件(0 行即 409)、\n终态与 outbox 同 tx、能力不可用 → job BLOCKED + 诚实 reason,禁止静默降级。\n品牌准绳只逐镜标记不拒绝整份脚本(脚本属创作内容),硬拦截点在出定格图这个受控出口,\n显式放行需带参数且落审计事件。\n\n顺带修掉三个既有缺陷\n1. 合并遗留:sidecarEdit 用 sidecarGenerateResponseSchema 校验响应(要求 steps/\n loadSeconds),但 run_hosted_edit 两个字段都不返回 —— 托管改字会在客户端边界\n 直接 Zod 抛错(本地路径返回这两个字段,所以一直没暴露)\n2. check-migrations 的列检查只扫 CREATE TABLE,凡 ALTER TABLE ADD COLUMN 追加的\n @map 列一律误报 drift(此前唯一的 ALTER 列 brand_kits.profile 没 @map 才没现形)\n3. ktv-poster-master.png 血统在合并两侧打架,git log --all 证明该文件自初始化提交后\n 从未重新生成,取诚实标注 prototype-demo-master\n\n验收\n- 新增 pnpm check:script → reports/script-acceptance.latest.json(双后端各 8 passed\n + 1 skipped-live);own-tests floor 10→14,棘轮已收紧\n- pnpm check / check:runtime 均 exit 0\n- 浏览器实测:未确认角色 → 按钮 disabled 且提示缺哪个角色;绕过前端直打后端 → 422\n ROLE_NOT_CONFIRMED;跨租户 404;无凭证生成 → UI 显示 503 且不产生占位脚本\n\n诚实边界(已写入 CLAUDE.md)\n- liveLlmAsserted=false:本机无 DASHSCOPE_API_KEY,真调 LLM 的 live 断言被 skip,\n 门禁成立 ≠ LLM 出脚本已验证\n- check:inference 在本机为 failed(动手前即为 failed):本工作副本的模型权重是\n git-lfs 指针存根,非本轮改动导致;基线表该行已从 GREEN 改为 OPEN\n- ui-acceptance 报告早于本屏,未覆盖 script 屏,已标 STALE\n- 新开缺口 G16(LLM 只做结构校验、无事实性校验)、G17(同步 HTTP 挂分钟级推理 /\n render_jobs 索引非 CONCURRENTLY / 本地多图 I2I 未在本机验证)\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-08-17T22:04:48-07:00"}],"HeadCommit":{"Sha1":"eb6483fa7aadc8d2d4e715274c2519f67005e135","Message":"Merge pull request 'feat(script): 接入大语言模型——歌词/文案 → 拍摄脚本 → 角色确认 → 定格图' (#3) from feat/llm-shooting-script into main\n\nReviewed-on: https://gitea.g-hi.com/luoanwu/image-generation/pulls/3\n","AuthorEmail":"law@g-hi.com","AuthorName":"luoanwu","CommitterEmail":"law@g-hi.com","CommitterName":"luoanwu","Timestamp":"2026-08-18T14:00:06+08:00"},"CompareURL":"luoanwu/image-generation/compare/9af0a397ce69cf03623a495ee3ef49943598f5a4...eb6483fa7aadc8d2d4e715274c2519f67005e135","Len":3}...
|
1787032809
|
Edit
Delete
|
|
23827
|
5
|
11
|
5
|
57
|
0
|
0
|
|
0
|
3|feat(script): 接入大语言模型——歌词/文案 → 拍摄脚本 → 角色确认 → 定格图
|
1787032807
|
Edit
Delete
|
|
23818
|
5
|
5
|
5
|
57
|
0
|
0
|
refs/heads/feat/llm-shooting-script
|
0
|
{"Commits":[{"Sha1":"b9d34cfb7 {"Commits":[{"Sha1":"b9d34cfb7e777377776325d7b2e73f1a15ff19e8","Message":"feat(script): 分镜可编辑、定格图可微调可回滚\n\nC10 交付后脚本是只读的——LLM 出完就不能改,定格图也只能整张重出。本轮补齐「改」。\n\n分镜编辑\n- 字段编辑 + 增删 + 重排;镜号唯一约束下走两阶段负号位移,1..N 恒连续不撞号\n- 重排要求全量顺序,拒绝增量语义歧义\n- 改角色 appearance 强制退回 DRAFT 并解绑参考图(描述与图不能各说各话);只改 name 不解绑\n- ARCHIVED / ROLES_LOCKED 从装饰性状态变成真实写约束\n\n定格图调整\n- 三模式:FROM_ROLES 从角色重出 / ADJUST 在当前图上按指令迭代微调 / VARIATION 换种子出候选\n- buildStillAdjustInstruction 把「只改这一点、构图与角色都别动」写死进指令\n (迭代微调最常见的失败是模型顺手重画整张)\n- 历史版本表 script_still_versions:每次出图/微调/换版追加一版,可回滚\n\n失效判据(契约单源,双端同源消费)\n- computeShotFingerprint 把所有影响成图的输入拼成规范串——刻意不哈希:\n 碰撞意味着「该失效却没标失效」,那是静默错误;规范串几百字节可肉眼比对\n- isShotStillStale 据此判断;策略是标记失效不自动删图\n (删掉人已满意的图是不可逆破坏,决定权留给人)\n\n三处刻意的「不静默」\n1. ADJUST 无底图 → NO_STILL_TO_ADJUST 明确报错,不悄悄改成整张重出\n2. 回滚连该版本的 fingerprint 一起还原,否则回滚回来的旧图会被误判成新鲜的\n3. 指纹用规范串而非哈希\n\n验收\n- contracts 新增 13 条失效判据单测(61 tests 全绿)\n- 双后端 acceptance 各 21 passed + 1 skipped-live(原 8)\n- pnpm check / check:runtime / check:script 均 exit 0;own-tests floor 14→15\n- 浏览器实测:过期横幅、编辑表单预填真实值、UI 改动落库并发 material.script.shot.updated、\n 新增与上移后镜号仍连续且未撞唯一约束\n\n诚实边界不变:liveLlmAsserted 仍为 false(本机无 DASHSCOPE_API_KEY);\ncheck:inference 仍因权重是 git-lfs 存根而红,与本轮无关。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-08-17T22:52:19-07:00"}],"HeadCommit":{"Sha1":"b9d34cfb7e777377776325d7b2e73f1a15ff19e8","Message":"feat(script): 分镜可编辑、定格图可微调可回滚\n\nC10 交付后脚本是只读的——LLM 出完就不能改,定格图也只能整张重出。本轮补齐「改」。\n\n分镜编辑\n- 字段编辑 + 增删 + 重排;镜号唯一约束下走两阶段负号位移,1..N 恒连续不撞号\n- 重排要求全量顺序,拒绝增量语义歧义\n- 改角色 appearance 强制退回 DRAFT 并解绑参考图(描述与图不能各说各话);只改 name 不解绑\n- ARCHIVED / ROLES_LOCKED 从装饰性状态变成真实写约束\n\n定格图调整\n- 三模式:FROM_ROLES 从角色重出 / ADJUST 在当前图上按指令迭代微调 / VARIATION 换种子出候选\n- buildStillAdjustInstruction 把「只改这一点、构图与角色都别动」写死进指令\n (迭代微调最常见的失败是模型顺手重画整张)\n- 历史版本表 script_still_versions:每次出图/微调/换版追加一版,可回滚\n\n失效判据(契约单源,双端同源消费)\n- computeShotFingerprint 把所有影响成图的输入拼成规范串——刻意不哈希:\n 碰撞意味着「该失效却没标失效」,那是静默错误;规范串几百字节可肉眼比对\n- isShotStillStale 据此判断;策略是标记失效不自动删图\n (删掉人已满意的图是不可逆破坏,决定权留给人)\n\n三处刻意的「不静默」\n1. ADJUST 无底图 → NO_STILL_TO_ADJUST 明确报错,不悄悄改成整张重出\n2. 回滚连该版本的 fingerprint 一起还原,否则回滚回来的旧图会被误判成新鲜的\n3. 指纹用规范串而非哈希\n\n验收\n- contracts 新增 13 条失效判据单测(61 tests 全绿)\n- 双后端 acceptance 各 21 passed + 1 skipped-live(原 8)\n- pnpm check / check:runtime / check:script 均 exit 0;own-tests floor 14→15\n- 浏览器实测:过期横幅、编辑表单预填真实值、UI 改动落库并发 material.script.shot.updated、\n 新增与上移后镜号仍连续且未撞唯一约束\n\n诚实边界不变:liveLlmAsserted 仍为 false(本机无 DASHSCOPE_API_KEY);\ncheck:inference 仍因权重是 git-lfs 存根而红,与本轮无关。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-08-17T22:52:19-07:00"},"CompareURL":"luoanwu/image-generation/compare/4c34ff4ff22ff5aab34e0492fd7fef9c2c989b02...b9d34cfb7e777377776325d7b2e73f1a15ff19e8","Len":1}...
|
1787032352
|
Edit
Delete
|
|
23764
|
5
|
7
|
5
|
57
|
0
|
0
|
|
0
|
3|feat(script): 接入大语言模型——歌词/文案 → 拍摄脚本 → 角色确认 → 定格图
|
1787029792
|
Edit
Delete
|
|
23762
|
5
|
5
|
5
|
57
|
0
|
0
|
refs/heads/feat/llm-shooting-script
|
0
|
{"Commits":[{"Sha1":"4c34ff4ff {"Commits":[{"Sha1":"4c34ff4ff22ff5aab34e0492fd7fef9c2c989b02","Message":"feat(script): 接入大语言模型——歌词/文案 → 拍摄脚本 → 角色确认 → 定格图\n\n本仓此前零 LLM 接入(全仓只有 DashScope 的图像调用),「歌词成图」屏是纯前端\n原型(procedural.ts 画色块 + setTimeout 假装推理,不落库不接后端)。本轮把这条\n动线升级为真链路 + 真持久化。\n\n契约单源(packages/contracts/src/script.ts)\n- 角色确认状态机 scriptRoleMachine、脚本状态机 shootingScriptMachine\n- 景别/运镜用枚举而非自由文本:LLM 一旦自由发挥,下游 prompt 与统计就没有稳定口径\n- scriptDraftSchema 是 LLM 输出的唯一判据;prompt 构造器单源,两后端禁止各拼一份\n- evaluateRoleReadiness:本域核心不变量,双后端硬拦截 + 前端同源即时反馈\n- 前端私有的 findBannedHits 上收为 contracts 的 findBannedWords(后端也要逐镜标记,\n 两份并行就是双真源)\n\nLLM 不是权威\n- sidecar /v1/script 只保证「返回长得像脚本的 JSON」,两个后端各自再 parse 一次才落库\n- 模型引用未声明角色键 → 422 SCRIPT_ROLE_KEYS_DANGLING(幻觉护栏)\n- 连续给不出合法 JSON → 502 LLM_OUTPUT_UNPARSEABLE,绝不返回占位脚本\n- parse_json_object 只剥围栏、截首尾花括号,不做字段猜测或补齐\n\n角色必须先确认才允许出定格图\n- 判据 = status CONFIRMED 且有 referenceAssetId(没有参考图就没有一致性锚点)\n- CONFIRMED --reset--\u003e DRAFT 会解除参考图绑定:人确认的是那一张图,不是那个名字\n- 出图时按 roleKeys 顺序喂参考图,与指令里「第 N 张参考图」编号严格对齐\n\n写链纪律与物料链路同构:tenant 全覆盖、updateMany 带状态前置条件(0 行即 409)、\n终态与 outbox 同 tx、能力不可用 → job BLOCKED + 诚实 reason,禁止静默降级。\n品牌准绳只逐镜标记不拒绝整份脚本(脚本属创作内容),硬拦截点在出定格图这个受控出口,\n显式放行需带参数且落审计事件。\n\n顺带修掉三个既有缺陷\n1. 合并遗留:sidecarEdit 用 sidecarGenerateResponseSchema 校验响应(要求 steps/\n loadSeconds),但 run_hosted_edit 两个字段都不返回 —— 托管改字会在客户端边界\n 直接 Zod 抛错(本地路径返回这两个字段,所以一直没暴露)\n2. check-migrations 的列检查只扫 CREATE TABLE,凡 ALTER TABLE ADD COLUMN 追加的\n @map 列一律误报 drift(此前唯一的 ALTER 列 brand_kits.profile 没 @map 才没现形)\n3. ktv-poster-master.png 血统在合并两侧打架,git log --all 证明该文件自初始化提交后\n 从未重新生成,取诚实标注 prototype-demo-master\n\n验收\n- 新增 pnpm check:script → reports/script-acceptance.latest.json(双后端各 8 passed\n + 1 skipped-live);own-tests floor 10→14,棘轮已收紧\n- pnpm check / check:runtime 均 exit 0\n- 浏览器实测:未确认角色 → 按钮 disabled 且提示缺哪个角色;绕过前端直打后端 → 422\n ROLE_NOT_CONFIRMED;跨租户 404;无凭证生成 → UI 显示 503 且不产生占位脚本\n\n诚实边界(已写入 CLAUDE.md)\n- liveLlmAsserted=false:本机无 DASHSCOPE_API_KEY,真调 LLM 的 live 断言被 skip,\n 门禁成立 ≠ LLM 出脚本已验证\n- check:inference 在本机为 failed(动手前即为 failed):本工作副本的模型权重是\n git-lfs 指针存根,非本轮改动导致;基线表该行已从 GREEN 改为 OPEN\n- ui-acceptance 报告早于本屏,未覆盖 script 屏,已标 STALE\n- 新开缺口 G16(LLM 只做结构校验、无事实性校验)、G17(同步 HTTP 挂分钟级推理 /\n render_jobs 索引非 CONCURRENTLY / 本地多图 I2I 未在本机验证)\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-08-17T22:04:48-07:00"}],"HeadCommit":{"Sha1":"4c34ff4ff22ff5aab34e0492fd7fef9c2c989b02","Message":"feat(script): 接入大语言模型——歌词/文案 → 拍摄脚本 → 角色确认 → 定格图\n\n本仓此前零 LLM 接入(全仓只有 DashScope 的图像调用),「歌词成图」屏是纯前端\n原型(procedural.ts 画色块 + setTimeout 假装推理,不落库不接后端)。本轮把这条\n动线升级为真链路 + 真持久化。\n\n契约单源(packages/contracts/src/script.ts)\n- 角色确认状态机 scriptRoleMachine、脚本状态机 shootingScriptMachine\n- 景别/运镜用枚举而非自由文本:LLM 一旦自由发挥,下游 prompt 与统计就没有稳定口径\n- scriptDraftSchema 是 LLM 输出的唯一判据;prompt 构造器单源,两后端禁止各拼一份\n- evaluateRoleReadiness:本域核心不变量,双后端硬拦截 + 前端同源即时反馈\n- 前端私有的 findBannedHits 上收为 contracts 的 findBannedWords(后端也要逐镜标记,\n 两份并行就是双真源)\n\nLLM 不是权威\n- sidecar /v1/script 只保证「返回长得像脚本的 JSON」,两个后端各自再 parse 一次才落库\n- 模型引用未声明角色键 → 422 SCRIPT_ROLE_KEYS_DANGLING(幻觉护栏)\n- 连续给不出合法 JSON → 502 LLM_OUTPUT_UNPARSEABLE,绝不返回占位脚本\n- parse_json_object 只剥围栏、截首尾花括号,不做字段猜测或补齐\n\n角色必须先确认才允许出定格图\n- 判据 = status CONFIRMED 且有 referenceAssetId(没有参考图就没有一致性锚点)\n- CONFIRMED --reset--\u003e DRAFT 会解除参考图绑定:人确认的是那一张图,不是那个名字\n- 出图时按 roleKeys 顺序喂参考图,与指令里「第 N 张参考图」编号严格对齐\n\n写链纪律与物料链路同构:tenant 全覆盖、updateMany 带状态前置条件(0 行即 409)、\n终态与 outbox 同 tx、能力不可用 → job BLOCKED + 诚实 reason,禁止静默降级。\n品牌准绳只逐镜标记不拒绝整份脚本(脚本属创作内容),硬拦截点在出定格图这个受控出口,\n显式放行需带参数且落审计事件。\n\n顺带修掉三个既有缺陷\n1. 合并遗留:sidecarEdit 用 sidecarGenerateResponseSchema 校验响应(要求 steps/\n loadSeconds),但 run_hosted_edit 两个字段都不返回 —— 托管改字会在客户端边界\n 直接 Zod 抛错(本地路径返回这两个字段,所以一直没暴露)\n2. check-migrations 的列检查只扫 CREATE TABLE,凡 ALTER TABLE ADD COLUMN 追加的\n @map 列一律误报 drift(此前唯一的 ALTER 列 brand_kits.profile 没 @map 才没现形)\n3. ktv-poster-master.png 血统在合并两侧打架,git log --all 证明该文件自初始化提交后\n 从未重新生成,取诚实标注 prototype-demo-master\n\n验收\n- 新增 pnpm check:script → reports/script-acceptance.latest.json(双后端各 8 passed\n + 1 skipped-live);own-tests floor 10→14,棘轮已收紧\n- pnpm check / check:runtime 均 exit 0\n- 浏览器实测:未确认角色 → 按钮 disabled 且提示缺哪个角色;绕过前端直打后端 → 422\n ROLE_NOT_CONFIRMED;跨租户 404;无凭证生成 → UI 显示 503 且不产生占位脚本\n\n诚实边界(已写入 CLAUDE.md)\n- liveLlmAsserted=false:本机无 DASHSCOPE_API_KEY,真调 LLM 的 live 断言被 skip,\n 门禁成立 ≠ LLM 出脚本已验证\n- check:inference 在本机为 failed(动手前即为 failed):本工作副本的模型权重是\n git-lfs 指针存根,非本轮改动导致;基线表该行已从 GREEN 改为 OPEN\n- ui-acceptance 报告早于本屏,未覆盖 script 屏,已标 STALE\n- 新开缺口 G16(LLM 只做结构校验、无事实性校验)、G17(同步 HTTP 挂分钟级推理 /\n render_jobs 索引非 CONCURRENTLY / 本地多图 I2I 未在本机验证)\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-08-17T22:04:48-07:00"},"CompareURL":"luoanwu/image-generation/compare/9af0a397ce69cf03623a495ee3ef49943598f5a4...4c34ff4ff22ff5aab34e0492fd7fef9c2c989b02","Len":1}...
|
1787029504
|
Edit
Delete
|
|
23761
|
5
|
5
|
5
|
57
|
0
|
0
|
refs/heads/feat/llm-shooting-script
|
0
|
|
1787029504
|
Edit
Delete
|
|
23758
|
5
|
5
|
5
|
57
|
0
|
0
|
refs/heads/main
|
0
|
{"Commits":[{"Sha1":"9af0a397c {"Commits":[{"Sha1":"9af0a397ce69cf03623a495ee3ef49943598f5a4","Message":"Merge origin/main: 双推理路线合流为「本地优先 / 托管兜底」能力路由\n\n远端 PR #1(本地权重真跑,面向 128 GiB 主机)与本地 a3b0b41(托管 DashScope\nQwen-Image 3.0,面向 24 GiB 主机)各自独立实现了改字,在 /v1/edit 与双后端\nrender-pipeline 上正面冲突——同一事实两份运行时口径(违治理原则 1)。\n本次不做二选一,合流为一条按能力路由的通路。\n\ncontracts(路由单源)\n- 新增 RENDER_KIND_FALLBACK_CAPABILITIES + resolveRenderCapabilityKeys():\n 主能力=本地 qwen-image-edit,兜底=托管 qwen-image-3-api,双后端禁止各自\n 展开再拼一遍降级逻辑\n- 修掉三方自动合并留下的语义漂移:RENDER_KIND_CAPABILITIES 曾被并成\n 「改字 kind 只映射托管」,与本地优先矛盾\n- 新增 LOCAL_MODEL_KINDS;MATERIAL_MODEL_ROUTING 改字标签体现双通路\n- 契约测试同步断言新语义(主/兜底/解析顺序/无兜底 kind)\n\nsidecar\n- run_edit 改为路由版:本地可跑优先走本地(不外传底图、不产生云端调用费),\n 本地不可用才降到托管;显式传 modelKey 则锁定该条路径不做隐式回退\n- HEAD 的托管实现降为 run_hosted_edit() 分支,EditRequest / run_edit 各唯一\n- 两条都不可用 → 503 NO_EDIT_BACKEND_AVAILABLE 且同时带上两侧 capability,\n 禁止静默降级\n\n双后端\n- sidecarEdit 的 modelKey 由硬编码 'qwen-image-edit' 改为路由解析结果,\n 否则小内存主机上托管兜底永远走不到\n- BLOCKED reason 逐条列出每个候选能力为何不可用\n- 清理两处悬空的 hostedEdit 引用(声明在冲突块、使用在自动合并区,\n 靠 typecheck 兜住)——该分支只在 procedural 路径可达,直接调 sidecarRender\n\n前端\n- 血统标注按证据判定:ktv-poster-master.png 由初始化提交 fc2ce50 引入且\n 远端从未改动,远端将其标为「Qwen-Image-2512 产物」属误标,保留\n 「原型演示静态素材」口径(P3:不冒充模型产物)\n- constants.ts 模型口径一律从 MATERIAL_MODEL_ROUTING 派生,不留第二真源\n\n验收(诚实记录)\n- pnpm check 全项 exit 0\n- pnpm check:runtime 真实 DB+Redis 通过(迁移 deploy/status + 双后端测试)\n- pnpm check:inference 在本机失败:权重实体已删除、仅剩 git-lfs 指针,\n sidecar-health 阶段诚实报 PaddleOCR 权重不完整。属环境限制非代码缺陷,\n 已记为 G16,未因此放宽任何断言\n\nCLAUDE.md 回灌:C10 闭环记录、G14 合并两侧真实证据、G16 新增\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-08-17T21:19:49-07:00"},{"Sha1":"a3b0b41a799077b4ab46b58ee7290ae27be009f3","Message":"feat: integrate Qwen-Image 3.0 hosted edit via DashScope\n\nQwen-Image 3.0 (released 2026-07-21) ships no public weights (HF-verified;\nlatest open checkpoint remains Qwen-Image-2512), so integration goes through\nthe Aliyun Model Studio hosted API instead of the weights manifest.\n\n- contracts: add qwen-image-3-api capability (kind=hosted-api), HOSTED_EDIT_KINDS,\n buildEditInstruction (prompt stays aligned with OCR gate expectations),\n sidecarCapabilitySchema.kind; fix lingering \"Qwen-Image 2.0\" routing drift\n- sidecar: /v1/edit now really calls DashScope multimodal-generation\n (base64 base image, \u003e2048px downscale, 24h result URL downloaded to disk\n immediately, honest 503 HOSTED_API_KEY_MISSING / 502 HOSTED_API_ERROR;\n zero new Python deps)\n- backends (NestJS+Fastify, isomorphic): render pipeline executes hosted edit\n kinds when credential ready -\u003e Asset(RENDERED, model=real engine id) -\u003e\n server-side OCR gate; other model kinds stay honestly BLOCKED\n- web: EditStudio hosted-edit entry (run-hosted-edit); MODEL_ROUTING_FALLBACK\n now derived from contracts; purge remaining \"Qwen-Image 2.0\" labels\n- acceptance: deterministic no-key BLOCKED assertions + runIf(DASHSCOPE_API_KEY)\n live test; 20B BLOCKED assertion moved to always-deterministic DESIGN_MASTER\n- gates re-run green: pnpm check / check:runtime / check:inference / check:ui\n (refreshed the stale failed ui-acceptance report left by a July port collision)\n- docs: CLAUDE.md C9 closed record, G14 rewrite, baseline refresh\n\nCo-Authored-By: Claude Fable 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-08-12T22:57:17-07:00"},{"Sha1":"34dc595ae157cf7904da55c885aee4af2c69c469","Message":"chore: add material factory model weights\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-07-06T02:21:25-07:00"}],"HeadCommit":{"Sha1":"9af0a397ce69cf03623a495ee3ef49943598f5a4","Message":"Merge origin/main: 双推理路线合流为「本地优先 / 托管兜底」能力路由\n\n远端 PR #1(本地权重真跑,面向 128 GiB 主机)与本地 a3b0b41(托管 DashScope\nQwen-Image 3.0,面向 24 GiB 主机)各自独立实现了改字,在 /v1/edit 与双后端\nrender-pipeline 上正面冲突——同一事实两份运行时口径(违治理原则 1)。\n本次不做二选一,合流为一条按能力路由的通路。\n\ncontracts(路由单源)\n- 新增 RENDER_KIND_FALLBACK_CAPABILITIES + resolveRenderCapabilityKeys():\n 主能力=本地 qwen-image-edit,兜底=托管 qwen-image-3-api,双后端禁止各自\n 展开再拼一遍降级逻辑\n- 修掉三方自动合并留下的语义漂移:RENDER_KIND_CAPABILITIES 曾被并成\n 「改字 kind 只映射托管」,与本地优先矛盾\n- 新增 LOCAL_MODEL_KINDS;MATERIAL_MODEL_ROUTING 改字标签体现双通路\n- 契约测试同步断言新语义(主/兜底/解析顺序/无兜底 kind)\n\nsidecar\n- run_edit 改为路由版:本地可跑优先走本地(不外传底图、不产生云端调用费),\n 本地不可用才降到托管;显式传 modelKey 则锁定该条路径不做隐式回退\n- HEAD 的托管实现降为 run_hosted_edit() 分支,EditRequest / run_edit 各唯一\n- 两条都不可用 → 503 NO_EDIT_BACKEND_AVAILABLE 且同时带上两侧 capability,\n 禁止静默降级\n\n双后端\n- sidecarEdit 的 modelKey 由硬编码 'qwen-image-edit' 改为路由解析结果,\n 否则小内存主机上托管兜底永远走不到\n- BLOCKED reason 逐条列出每个候选能力为何不可用\n- 清理两处悬空的 hostedEdit 引用(声明在冲突块、使用在自动合并区,\n 靠 typecheck 兜住)——该分支只在 procedural 路径可达,直接调 sidecarRender\n\n前端\n- 血统标注按证据判定:ktv-poster-master.png 由初始化提交 fc2ce50 引入且\n 远端从未改动,远端将其标为「Qwen-Image-2512 产物」属误标,保留\n 「原型演示静态素材」口径(P3:不冒充模型产物)\n- constants.ts 模型口径一律从 MATERIAL_MODEL_ROUTING 派生,不留第二真源\n\n验收(诚实记录)\n- pnpm check 全项 exit 0\n- pnpm check:runtime 真实 DB+Redis 通过(迁移 deploy/status + 双后端测试)\n- pnpm check:inference 在本机失败:权重实体已删除、仅剩 git-lfs 指针,\n sidecar-health 阶段诚实报 PaddleOCR 权重不完整。属环境限制非代码缺陷,\n 已记为 G16,未因此放宽任何断言\n\nCLAUDE.md 回灌:C10 闭环记录、G14 合并两侧真实证据、G16 新增\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-08-17T21:19:49-07:00"},"CompareURL":"luoanwu/image-generation/compare/27c04f193a6a4170b1e0f7839a18d0e7e9b529fb...9af0a397ce69cf03623a495ee3ef49943598f5a4","Len":3}...
|
1787026816
|
Edit
Delete
|
|
23586
|
5
|
5
|
7
|
57
|
0
|
0
|
refs/heads/hljTest
|
0
|
{"Commits":[{"Sha1":"549ea3144 {"Commits":[{"Sha1":"549ea31448ec1e62e8f10039ed3f8c7d384e07f8","Message":"feat(material-factory): 接入阿里云百炼真实生成链路\n\nCo-authored-by: Qwen-Coder \u003cqwen-coder@alibabacloud.com\u003e\n","AuthorEmail":"hlj@g-hi.com","AuthorName":"huangliujian","CommitterEmail":"hlj@g-hi.com","CommitterName":"huangliujian","Timestamp":"2026-08-17T17:34:04+08:00"}],"HeadCommit":{"Sha1":"549ea31448ec1e62e8f10039ed3f8c7d384e07f8","Message":"feat(material-factory): 接入阿里云百炼真实生成链路\n\nCo-authored-by: Qwen-Coder \u003cqwen-coder@alibabacloud.com\u003e\n","AuthorEmail":"hlj@g-hi.com","AuthorName":"huangliujian","CommitterEmail":"hlj@g-hi.com","CommitterName":"huangliujian","Timestamp":"2026-08-17T17:34:04+08:00"},"CompareURL":"luoanwu/image-generation/compare/27c04f193a6a4170b1e0f7839a18d0e7e9b529fb...549ea31448ec1e62e8f10039ed3f8c7d384e07f8","Len":1}...
|
1786959245
|
Edit
Delete
|
|
23584
|
5
|
5
|
7
|
57
|
0
|
0
|
refs/heads/hljTest
|
0
|
|
1786959245
|
Edit
Delete
|
|
22305
|
5
|
7
|
5
|
57
|
0
|
0
|
|
0
|
2|chore: add material factory model weights
|
1786603029
|
Edit
Delete
|
|
22304
|
5
|
5
|
5
|
57
|
0
|
0
|
refs/heads/feat/qwen-image-3-hosted
|
0
|
{"Commits":[{"Sha1":"a3b0b41a7 {"Commits":[{"Sha1":"a3b0b41a799077b4ab46b58ee7290ae27be009f3","Message":"feat: integrate Qwen-Image 3.0 hosted edit via DashScope\n\nQwen-Image 3.0 (released 2026-07-21) ships no public weights (HF-verified;\nlatest open checkpoint remains Qwen-Image-2512), so integration goes through\nthe Aliyun Model Studio hosted API instead of the weights manifest.\n\n- contracts: add qwen-image-3-api capability (kind=hosted-api), HOSTED_EDIT_KINDS,\n buildEditInstruction (prompt stays aligned with OCR gate expectations),\n sidecarCapabilitySchema.kind; fix lingering \"Qwen-Image 2.0\" routing drift\n- sidecar: /v1/edit now really calls DashScope multimodal-generation\n (base64 base image, \u003e2048px downscale, 24h result URL downloaded to disk\n immediately, honest 503 HOSTED_API_KEY_MISSING / 502 HOSTED_API_ERROR;\n zero new Python deps)\n- backends (NestJS+Fastify, isomorphic): render pipeline executes hosted edit\n kinds when credential ready -\u003e Asset(RENDERED, model=real engine id) -\u003e\n server-side OCR gate; other model kinds stay honestly BLOCKED\n- web: EditStudio hosted-edit entry (run-hosted-edit); MODEL_ROUTING_FALLBACK\n now derived from contracts; purge remaining \"Qwen-Image 2.0\" labels\n- acceptance: deterministic no-key BLOCKED assertions + runIf(DASHSCOPE_API_KEY)\n live test; 20B BLOCKED assertion moved to always-deterministic DESIGN_MASTER\n- gates re-run green: pnpm check / check:runtime / check:inference / check:ui\n (refreshed the stale failed ui-acceptance report left by a July port collision)\n- docs: CLAUDE.md C9 closed record, G14 rewrite, baseline refresh\n\nCo-Authored-By: Claude Fable 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-08-12T22:57:17-07:00"},{"Sha1":"34dc595ae157cf7904da55c885aee4af2c69c469","Message":"chore: add material factory model weights\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-07-06T02:21:25-07:00"}],"HeadCommit":{"Sha1":"a3b0b41a799077b4ab46b58ee7290ae27be009f3","Message":"feat: integrate Qwen-Image 3.0 hosted edit via DashScope\n\nQwen-Image 3.0 (released 2026-07-21) ships no public weights (HF-verified;\nlatest open checkpoint remains Qwen-Image-2512), so integration goes through\nthe Aliyun Model Studio hosted API instead of the weights manifest.\n\n- contracts: add qwen-image-3-api capability (kind=hosted-api), HOSTED_EDIT_KINDS,\n buildEditInstruction (prompt stays aligned with OCR gate expectations),\n sidecarCapabilitySchema.kind; fix lingering \"Qwen-Image 2.0\" routing drift\n- sidecar: /v1/edit now really calls DashScope multimodal-generation\n (base64 base image, \u003e2048px downscale, 24h result URL downloaded to disk\n immediately, honest 503 HOSTED_API_KEY_MISSING / 502 HOSTED_API_ERROR;\n zero new Python deps)\n- backends (NestJS+Fastify, isomorphic): render pipeline executes hosted edit\n kinds when credential ready -\u003e Asset(RENDERED, model=real engine id) -\u003e\n server-side OCR gate; other model kinds stay honestly BLOCKED\n- web: EditStudio hosted-edit entry (run-hosted-edit); MODEL_ROUTING_FALLBACK\n now derived from contracts; purge remaining \"Qwen-Image 2.0\" labels\n- acceptance: deterministic no-key BLOCKED assertions + runIf(DASHSCOPE_API_KEY)\n live test; 20B BLOCKED assertion moved to always-deterministic DESIGN_MASTER\n- gates re-run green: pnpm check / check:runtime / check:inference / check:ui\n (refreshed the stale failed ui-acceptance report left by a July port collision)\n- docs: CLAUDE.md C9 closed record, G14 rewrite, baseline refresh\n\nCo-Authored-By: Claude Fable 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-08-12T22:57:17-07:00"},"CompareURL":"luoanwu/image-generation/compare/fc2ce503c94d763b1d077e7c734720a0c58e23a8...a3b0b41a799077b4ab46b58ee7290ae27be009f3","Len":2}...
|
1786602934
|
Edit
Delete
|
|
22303
|
5
|
5
|
5
|
57
|
0
|
0
|
refs/heads/feat/qwen-image-3-hosted
|
0
|
|
1786602934
|
Edit
Delete
|
|
16224
|
5
|
5
|
5
|
57
|
0
|
0
|
refs/heads/main
|
1
|
{"Commits":[{"Sha1":"27c04f193 {"Commits":[{"Sha1":"27c04f193a6a4170b1e0f7839a18d0e7e9b529fb","Message":"Merge pull request 'feat(material-factory): 图像模型真实推理对接 + 双后端渲染管线闭环' (#1) from feat/qwen-image-inference into main\n\nReviewed-on: https://gitea.g-hi.com/luoanwu/image-generation/pulls/1\n","AuthorEmail":"law@g-hi.com","AuthorName":"luoanwu","CommitterEmail":"law@g-hi.com","CommitterName":"luoanwu","Timestamp":"2026-07-07T07:46:33+08:00"},{"Sha1":"ac5f340c0422af2a5c3122289142e8517dc434c5","Message":"fix(sidecar): Qwen-Image-Edit 未指定尺寸时保留底图原生分辨率\n\nQwenImageEditPlus 默认把输入塌到 ~1MP 规范面积,密集中文标题在 1MP + 低步数下\n笔画糊/字形崩。新增 _fit_edit_dims:未显式传 width/height 时按底图原生分辨率\n(保纵横比、向下取整 16 倍数、封顶 QWEN_EDIT_MAX_AREA=1.5MP 兜内存/耗时)驱动,\n调用方仍可显式覆盖。\n\n实测 ktv-poster-master(1672x941) 改字:4 步@1.06MP 文字 melted → 20 步@1.49MP\n(1632x912)文字笔画完整清晰、字形正确,无高分辨率伪影。清晰度决定因素是步数\n(生产默认 40),分辨率为次因;两者叠加达到可用海报质量。\n\nCo-Authored-By: Claude Opus 4.8 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luojuhai@luojuhaideMacBook-Pro.local","AuthorName":"luojuhai","CommitterEmail":"luojuhai@luojuhaideMacBook-Pro.local","CommitterName":"luojuhai","Timestamp":"2026-07-07T07:39:05+08:00"},{"Sha1":"973dde30db19928a0937f02a102979d473cce644","Message":"feat(material-factory): 图像模型真实推理对接 + 双后端渲染管线闭环\n\n把嗨设工坊从「权重就绪、推理是桩」推进到「本机真跑转绿」:\n\nsidecar (services/model-sidecar)\n- /v1/generate 真调 Z-Image-Turbo / Qwen-Image-2512(modelKey 路由)\n- /v1/edit 真调 Qwen-Image-Edit-2511(QwenImageEditPlusPipeline)\n- capability() 依赖齐全时开启 qwen-image-master/edit(128 GiB 主机 loadable)\n- 单 pipeline 常驻、kind 切换释放旧模型,防双 20B 同驻 OOM\n- 修 torchvision 隐藏依赖:Qwen2VLProcessor→Qwen2VLVideoProcessor 硬依赖它,\n 缺失则 from_pretrained ImportError(进 pyproject zimage extra)\n- 加载失败包 try/except → 结构化 503(不再冒 500)\n- SIDECAR_QWEN_STEPS:生产默认 40 步,CI/验收可降步提速(真引擎真像素)\n\n双后端 (NestJS + Fastify 同契约)\n- render-pipeline 按 kind 路由:APPEARANCE/SEMANTIC_EDIT→sidecarEdit,\n DESIGN_MASTER/TURBO_VARIANT→sidecarGenerate;job 状态机真流转 + 乐观锁 + outbox 同 tx\n- 修 undici 300s 传输超时:Node 内置 fetch 的 headersTimeout/bodyTimeout 默认 300s\n 会把分钟级同步推理在 ~302s 中止成假 SidecarUnavailableError(AbortSignal 压不住)。\n 改用 undici@6 request() + 请求级 headersTimeout/bodyTimeout 对齐 timeoutMs\n\n验收\n- DATABASE_URL=... INFERENCE_RUN_QWEN=1 pnpm check:inference 双后端各 6/6 绿\n- Qwen-Image-Edit 真改图 SUCCEEDED(金色中文标题精确改写 + OCR gate 联动)\n- pnpm check 全部静态门禁绿;CLAUDE.md(=AGENTS.md) 回灌 G14/真跑证据\n\n仍打开(诚实缺口):render-pipeline 同步端点(G13)、异步 worker 化、\n单 MPS 多进程串行化、Qwen nightly/self-hosted 验收。\n\nCo-Authored-By: Claude Opus 4.8 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luojuhai@luojuhaideMacBook-Pro.local","AuthorName":"luojuhai","CommitterEmail":"luojuhai@luojuhaideMacBook-Pro.local","CommitterName":"luojuhai","Timestamp":"2026-07-07T06:35:04+08:00"}],"HeadCommit":{"Sha1":"27c04f193a6a4170b1e0f7839a18d0e7e9b529fb","Message":"Merge pull request 'feat(material-factory): 图像模型真实推理对接 + 双后端渲染管线闭环' (#1) from feat/qwen-image-inference into main\n\nReviewed-on: https://gitea.g-hi.com/luoanwu/image-generation/pulls/1\n","AuthorEmail":"law@g-hi.com","AuthorName":"luoanwu","CommitterEmail":"law@g-hi.com","CommitterName":"luoanwu","Timestamp":"2026-07-07T07:46:33+08:00"},"CompareURL":"luoanwu/image-generation/compare/fc2ce503c94d763b1d077e7c734720a0c58e23a8...27c04f193a6a4170b1e0f7839a18d0e7e9b529fb","Len":3}...
|
1783381594
|
Edit
Delete
|
|
16223
|
5
|
11
|
5
|
57
|
0
|
0
|
|
1
|
1|feat(material-factory): 图像模型真实推理对接 + 双后端渲染管线闭环
|
1783381594
|
Edit
Delete
|
|
16222
|
5
|
7
|
5
|
57
|
0
|
0
|
|
1
|
1|feat(material-factory): 图像模型真实推理对接 + 双后端渲染管线闭环
|
1783381429
|
Edit
Delete
|
|
16221
|
5
|
5
|
5
|
57
|
0
|
0
|
refs/heads/feat/qwen-image-inference
|
1
|
{"Commits":[{"Sha1":"ac5f340c0 {"Commits":[{"Sha1":"ac5f340c0422af2a5c3122289142e8517dc434c5","Message":"fix(sidecar): Qwen-Image-Edit 未指定尺寸时保留底图原生分辨率\n\nQwenImageEditPlus 默认把输入塌到 ~1MP 规范面积,密集中文标题在 1MP + 低步数下\n笔画糊/字形崩。新增 _fit_edit_dims:未显式传 width/height 时按底图原生分辨率\n(保纵横比、向下取整 16 倍数、封顶 QWEN_EDIT_MAX_AREA=1.5MP 兜内存/耗时)驱动,\n调用方仍可显式覆盖。\n\n实测 ktv-poster-master(1672x941) 改字:4 步@1.06MP 文字 melted → 20 步@1.49MP\n(1632x912)文字笔画完整清晰、字形正确,无高分辨率伪影。清晰度决定因素是步数\n(生产默认 40),分辨率为次因;两者叠加达到可用海报质量。\n\nCo-Authored-By: Claude Opus 4.8 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luojuhai@luojuhaideMacBook-Pro.local","AuthorName":"luojuhai","CommitterEmail":"luojuhai@luojuhaideMacBook-Pro.local","CommitterName":"luojuhai","Timestamp":"2026-07-07T07:39:05+08:00"},{"Sha1":"973dde30db19928a0937f02a102979d473cce644","Message":"feat(material-factory): 图像模型真实推理对接 + 双后端渲染管线闭环\n\n把嗨设工坊从「权重就绪、推理是桩」推进到「本机真跑转绿」:\n\nsidecar (services/model-sidecar)\n- /v1/generate 真调 Z-Image-Turbo / Qwen-Image-2512(modelKey 路由)\n- /v1/edit 真调 Qwen-Image-Edit-2511(QwenImageEditPlusPipeline)\n- capability() 依赖齐全时开启 qwen-image-master/edit(128 GiB 主机 loadable)\n- 单 pipeline 常驻、kind 切换释放旧模型,防双 20B 同驻 OOM\n- 修 torchvision 隐藏依赖:Qwen2VLProcessor→Qwen2VLVideoProcessor 硬依赖它,\n 缺失则 from_pretrained ImportError(进 pyproject zimage extra)\n- 加载失败包 try/except → 结构化 503(不再冒 500)\n- SIDECAR_QWEN_STEPS:生产默认 40 步,CI/验收可降步提速(真引擎真像素)\n\n双后端 (NestJS + Fastify 同契约)\n- render-pipeline 按 kind 路由:APPEARANCE/SEMANTIC_EDIT→sidecarEdit,\n DESIGN_MASTER/TURBO_VARIANT→sidecarGenerate;job 状态机真流转 + 乐观锁 + outbox 同 tx\n- 修 undici 300s 传输超时:Node 内置 fetch 的 headersTimeout/bodyTimeout 默认 300s\n 会把分钟级同步推理在 ~302s 中止成假 SidecarUnavailableError(AbortSignal 压不住)。\n 改用 undici@6 request() + 请求级 headersTimeout/bodyTimeout 对齐 timeoutMs\n\n验收\n- DATABASE_URL=... INFERENCE_RUN_QWEN=1 pnpm check:inference 双后端各 6/6 绿\n- Qwen-Image-Edit 真改图 SUCCEEDED(金色中文标题精确改写 + OCR gate 联动)\n- pnpm check 全部静态门禁绿;CLAUDE.md(=AGENTS.md) 回灌 G14/真跑证据\n\n仍打开(诚实缺口):render-pipeline 同步端点(G13)、异步 worker 化、\n单 MPS 多进程串行化、Qwen nightly/self-hosted 验收。\n\nCo-Authored-By: Claude Opus 4.8 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luojuhai@luojuhaideMacBook-Pro.local","AuthorName":"luojuhai","CommitterEmail":"luojuhai@luojuhaideMacBook-Pro.local","CommitterName":"luojuhai","Timestamp":"2026-07-07T06:35:04+08:00"}],"HeadCommit":{"Sha1":"ac5f340c0422af2a5c3122289142e8517dc434c5","Message":"fix(sidecar): Qwen-Image-Edit 未指定尺寸时保留底图原生分辨率\n\nQwenImageEditPlus 默认把输入塌到 ~1MP 规范面积,密集中文标题在 1MP + 低步数下\n笔画糊/字形崩。新增 _fit_edit_dims:未显式传 width/height 时按底图原生分辨率\n(保纵横比、向下取整 16 倍数、封顶 QWEN_EDIT_MAX_AREA=1.5MP 兜内存/耗时)驱动,\n调用方仍可显式覆盖。\n\n实测 ktv-poster-master(1672x941) 改字:4 步@1.06MP 文字 melted → 20 步@1.49MP\n(1632x912)文字笔画完整清晰、字形正确,无高分辨率伪影。清晰度决定因素是步数\n(生产默认 40),分辨率为次因;两者叠加达到可用海报质量。\n\nCo-Authored-By: Claude Opus 4.8 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luojuhai@luojuhaideMacBook-Pro.local","AuthorName":"luojuhai","CommitterEmail":"luojuhai@luojuhaideMacBook-Pro.local","CommitterName":"luojuhai","Timestamp":"2026-07-07T07:39:05+08:00"},"CompareURL":"luoanwu/image-generation/compare/fc2ce503c94d763b1d077e7c734720a0c58e23a8...ac5f340c0422af2a5c3122289142e8517dc434c5","Len":2}...
|
1783381399
|
Edit
Delete
|
|
16220
|
5
|
5
|
5
|
57
|
0
|
0
|
refs/heads/feat/qwen-image-inference
|
1
|
|
1783381399
|
Edit
Delete
|
|
16153
|
5
|
5
|
5
|
57
|
0
|
0
|
refs/heads/main
|
1
|
{"Commits":[{"Sha1":"fc2ce503c {"Commits":[{"Sha1":"fc2ce503c94d763b1d077e7c734720a0c58e23a8","Message":"feat: initialize HI Atelier material factory\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-07-06T01:30:42-07:00"}],"HeadCommit":{"Sha1":"fc2ce503c94d763b1d077e7c734720a0c58e23a8","Message":"feat: initialize HI Atelier material factory\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-07-06T01:30:42-07:00"},"CompareURL":"","Len":1}...
|
1783328698
|
Edit
Delete
|
|
16152
|
5
|
5
|
5
|
57
|
0
|
0
|
refs/heads/main
|
1
|
|
1783328698
|
Edit
Delete
|
|
16151
|
5
|
1
|
5
|
57
|
0
|
0
|
|
1
|
|
1783328662
|
Edit
Delete
|
|
16117
|
5
|
5
|
5
|
56
|
0
|
0
|
refs/heads/main
|
1
|
{"Commits":[{"Sha1":"e65fc3036 {"Commits":[{"Sha1":"e65fc3036083a4118e0c909bd6a58914e6b33fef","Message":"feat: initialize SiteScout workspace\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-07-06T01:31:18-07:00"}],"HeadCommit":{"Sha1":"e65fc3036083a4118e0c909bd6a58914e6b33fef","Message":"feat: initialize SiteScout workspace\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-07-06T01:31:18-07:00"},"CompareURL":"","Len":1}...
|
1783326783
|
Edit
Delete
|
|
16116
|
5
|
5
|
5
|
56
|
0
|
0
|
refs/heads/main
|
1
|
|
1783326783
|
Edit
Delete
|
|
16115
|
5
|
1
|
5
|
56
|
0
|
0
|
|
1
|
|
1783326759
|
Edit
Delete
|
|
16106
|
5
|
5
|
5
|
55
|
0
|
0
|
refs/heads/main
|
1
|
{"Commits":[{"Sha1":"8b9d81d39 {"Commits":[{"Sha1":"8b9d81d390dac8db76b755c9d7a25f7439e2a59b","Message":"chore: initialize data analysis scaffold\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-07-06T01:29:19-07:00"}],"HeadCommit":{"Sha1":"8b9d81d390dac8db76b755c9d7a25f7439e2a59b","Message":"chore: initialize data analysis scaffold\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-07-06T01:29:19-07:00"},"CompareURL":"","Len":1}...
|
1783326647
|
Edit
Delete
|
|
16105
|
5
|
5
|
5
|
55
|
0
|
0
|
refs/heads/main
|
1
|
|
1783326647
|
Edit
Delete
|
|
16104
|
5
|
1
|
5
|
55
|
0
|
0
|
|
1
|
|
1783326636
|
Edit
Delete
|
|
46327
|
5
|
5
|
5
|
54
|
0
|
0
|
refs/heads/main
|
0
|
{"Commits":[{"Sha1":"9aaa7f3e6 {"Commits":[{"Sha1":"9aaa7f3e689dccd2842296241cd0eddfd45eadd5","Message":"docs(skills): 派生同步技能描述不再绑定其他机器路径\n\n该技能是单侧真源,不经 agent-workflows 生成;check:quick 17/17,\n适配器生成核对写入 0 个。派生仓副本在下次框架同步时跟进并重签凭证。\n\nCo-Authored-By: Claude Opus 5.5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-11-04T19:22:38-08:00"}],"HeadCommit":{"Sha1":"9aaa7f3e689dccd2842296241cd0eddfd45eadd5","Message":"docs(skills): 派生同步技能描述不再绑定其他机器路径\n\n该技能是单侧真源,不经 agent-workflows 生成;check:quick 17/17,\n适配器生成核对写入 0 个。派生仓副本在下次框架同步时跟进并重签凭证。\n\nCo-Authored-By: Claude Opus 5.5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-11-04T19:22:38-08:00"},"CompareURL":"luoanwu/base-framework/compare/675d501b06b025704e9ca55ed5aeaf0fc85865eb...9aaa7f3e689dccd2842296241cd0eddfd45eadd5","Len":1}...
|
1793848960
|
Edit
Delete
|
|
45639
|
5
|
5
|
5
|
54
|
0
|
0
|
refs/heads/main
|
0
|
{"Commits":[{"Sha1":"675d501b0 {"Commits":[{"Sha1":"675d501b06b025704e9ca55ed5aeaf0fc85865eb","Message":"docs(d3): 修复两处运行证据相对链接提示\n","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-11-02T22:42:20-08:00"}],"HeadCommit":{"Sha1":"675d501b06b025704e9ca55ed5aeaf0fc85865eb","Message":"docs(d3): 修复两处运行证据相对链接提示\n","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-11-02T22:42:20-08:00"},"CompareURL":"luoanwu/base-framework/compare/e329a8cff4f85d556451e6ab7867857d60e2e1fc...675d501b06b025704e9ca55ed5aeaf0fc85865eb","Len":1}...
|
1793688149
|
Edit
Delete
|
|
45612
|
5
|
5
|
5
|
54
|
0
|
0
|
refs/heads/main
|
0
|
{"Commits":[{"Sha1":"e329a8cff {"Commits":[{"Sha1":"e329a8cff4f85d556451e6ab7867857d60e2e1fc","Message":"docs(skills): 回补验收报告作用域与重命名核对经验\n","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-11-02T21:59:35-08:00"}],"HeadCommit":{"Sha1":"e329a8cff4f85d556451e6ab7867857d60e2e1fc","Message":"docs(skills): 回补验收报告作用域与重命名核对经验\n","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-11-02T21:59:35-08:00"},"CompareURL":"luoanwu/base-framework/compare/bd083417feabbc5343ff4d3006d8952242ef178f...e329a8cff4f85d556451e6ab7867857d60e2e1fc","Len":1}...
|
1793685586
|
Edit
Delete
|
|
45549
|
5
|
5
|
5
|
54
|
0
|
0
|
refs/heads/main
|
0
|
{"Commits":[{"Sha1":"bd083417f {"Commits":[{"Sha1":"bd083417feabbc5343ff4d3006d8952242ef178f","Message":"chore(reports): FW-08完整20步与647脚本回绑 @ 0b7cf86\n","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-11-02T19:56:23-08:00"},{"Sha1":"0b7cf860f49a452ea1bce489d2793347eff45a3a","Message":"test(governance): use glossary-compliant fixture paths\n","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-11-02T09:04:27-08:00"},{"Sha1":"d24c39bf4f1f5f33d5fa1e461531d6fab2794a31","Message":"fix(governance): inspect both sides of evidence renames\n","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-11-01T18:00:29-08:00"},{"Sha1":"d2d6220d4f22d397897a58ef90c66c268735de16","Message":"fix(governance): bind record-only evidence to declared scopes\n","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-11-01T17:52:44-08:00"}],"HeadCommit":{"Sha1":"bd083417feabbc5343ff4d3006d8952242ef178f","Message":"chore(reports): FW-08完整20步与647脚本回绑 @ 0b7cf86\n","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-11-02T19:56:23-08:00"},"CompareURL":"luoanwu/base-framework/compare/33c7f2e356c507072dae1466a096027557cda48a...bd083417feabbc5343ff4d3006d8952242ef178f","Len":4}...
|
1793678195
|
Edit
Delete
|
|
44770
|
5
|
5
|
5
|
54
|
0
|
0
|
refs/heads/main
|
0
|
{"Commits":[{"Sha1":"33c7f2e35 {"Commits":[{"Sha1":"33c7f2e356c507072dae1466a096027557cda48a","Message":"chore(evidence): record static 20/20 and test:scripts 609/609 at 6e569a6\n\nCo-Authored-By: Claude Opus 5.5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-10-31T13:40:29-07:00"},{"Sha1":"6e569a61d05456173f56c56858cf040f29198418","Message":"test(release-verification): refresh generatedAt after the no-harness fixture commit\n\nThe D3 no-harness case committed a new fixture after the reports were\ngenerated without refreshing generatedAt, so near a second boundary the\nreport looked older than its source commit and find() returned the timing\nfailure instead of the D3 message (4/120 on main). Neighbouring cases at\nlines 111 and 238 already refresh it; 0/240 after the change.\n\nCo-Authored-By: Claude Opus 5.5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-10-31T13:38:07-07:00"}],"HeadCommit":{"Sha1":"33c7f2e356c507072dae1466a096027557cda48a","Message":"chore(evidence): record static 20/20 and test:scripts 609/609 at 6e569a6\n\nCo-Authored-By: Claude Opus 5.5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-10-31T13:40:29-07:00"},"CompareURL":"luoanwu/base-framework/compare/d024dfe85721e112a2963bcb2aed4abc84863540...33c7f2e356c507072dae1466a096027557cda48a","Len":2}...
|
1793479235
|
Edit
Delete
|
|
44767
|
5
|
5
|
5
|
54
|
0
|
0
|
refs/heads/main
|
0
|
{"Commits":[{"Sha1":"d024dfe85 {"Commits":[{"Sha1":"d024dfe85721e112a2963bcb2aed4abc84863540","Message":"chore(evidence): record static 20/20 and test:scripts 609/609 at e799172\n\nRebinds the 19 static reports from the clean detached run of e799172\n(runId local-static-1793476729341-68527-f85f3688-c967-43e5-8979-e716418fe6b3)\nand extends the consumer-type receipt with the second adversarial round:\n36 cases red on 90fdd87, 214/214 targeted green, five mutations red. The\npre-existing release-verification timing race (V14) failed the first\npnpm check and the first standalone test:scripts; reruns from restored\nclean reports passed.\n\nCo-Authored-By: Claude Opus 5.5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-10-31T13:09:22-07:00"},{"Sha1":"e7991721a7e57f7dd19bf495b3d3296636978094","Message":"fix(consumer-alignment): closed D3 status whitelist, peer-only deps not hosts, wider markers\n\nSecond adversarial round (V9-V13, non-blocking):\n- V9: receipt passedStatuses must come from a closed whitelist taken from the\n statuses existing D3 receipts use (passed, passed-local,\n passed-independent-local, passed-local-clean-fixed-source,\n passed-local-isolated-fixed-source).\n- V12: peerDependencies no longer make a package a host or UI server;\n dependencies and optionalDependencies still count.\n- V10: host-loading markers also match npm: aliases of *domain-sdk packages,\n \u003cpkg\u003e/engine.js|.mjs|/index.(m)js targets and domain_package / mixed-case\n manifest names.\n- V11: listener list extended (elysia, hyper-express, ultimate-express,\n @tinyhttp/app, uWebSockets.js, @feathersjs/express|koa, @adonisjs/core,\n sails); ws/socket.io deliberately excluded.\n- V13: bounded-ingress exceptions under apps/api-* or with @nestjs/* in any\n section are invalid.\n- docs state the finite listener list, package.json-only scanning, the marker\n variants not recognised and the exception check limits.\n\nVerification: 36 new cases red on 90fdd87, targeted 214/214, check:quick 17/17.\n\nCo-Authored-By: Claude Opus 5.5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-10-31T12:49:09-07:00"},{"Sha1":"90fdd874bb6536b763fd72cbc832da67165f8211","Message":"chore(evidence): record static 20/20 and test:scripts 573/573 at f6157c4\n\nRebinds the 19 static reports from the clean detached run of f6157c4\n(runId local-static-1793473921388-65358-d0ff7828-1e9f-41e2-9d4c-fb14aac20170)\nand extends the consumer-type receipt with the adversarial-review round:\n46 cases red on 7e525e2, 178/178 targeted green, seven mutations red. The\nfirst full run hit the pre-existing release-verification timing race\n(unchanged since 01fb4be); the rerun from restored clean reports passed.\n\nCo-Authored-By: Claude Opus 5.5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-10-31T12:18:20-07:00"},{"Sha1":"f6157c4b4f7ac034832f78467c66bad097df095a","Message":"fix(consumer-alignment): close hostless and D3 false greens found in adversarial review\n\n- hostless: detect host-loaded package markers (*domain-sdk dependency,\n \u003cpkg\u003e/engine import mapping, domain-package manifests) as\n HOSTLESS_HOST_LOADED_MARKERS; key the hosted twin guard by repository.\n- D3 detection: scan dependencies/optionalDependencies/peerDependencies with a\n wider listener list; no longer skip outputs/dist/releases/snapshots/backup-*;\n retired apps/api-fastify|api-express found from any tracked file; Next.js-style\n UI servers observed for D3 rows and treated as escapes for hostless rows.\n- D3 matching: exact host directories; exceptions must be detected non-NestJS,\n non-retired host packages (D3_EXCEPTION_INVALID), marked DECLARED_NOT_VERIFIED.\n- D3 receipts: passed/passed-\u003cqualifier\u003e grammar without negating qualifiers;\n mandatory kind/check/decision identity naming D3 (D3_RECEIPT_IDENTITY);\n record-only successors limited to root reports/, Markdown and receipt files.\n- declared hosts with a second raw HTTP framework: D3_SECOND_HTTP_FRAMEWORK.\n- docs (derived-matrix, COMPATIBILITY §3.1, CHANGELOG, CLAUDE.md) narrowed to the\n implemented protections and their limits.\n\nVerification: 46 new/adjusted cases red on 7e525e2 implementation, targeted\nsuites 178/178 green, check:quick 17/17. Full static gate pending on clean\ncheckout.\n\nCo-Authored-By: Claude Opus 5.5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-10-31T11:59:35-07:00"},{"Sha1":"7e525e279f18d1ba7a93cb973aab5b956a46fea7","Message":"chore(evidence): record static 20/20 and test:scripts 525/525 at 620e608\n\n- reports/*.latest.json from a clean detached `pnpm check` at 620e608\n (runId local-static-1793468744547-…, 20 steps, 525/525 script tests).\n- reports/consumer-type-alignment-2026-10-31.json: gate receipt only\n (red-before at 01fb4be and 3c7e7cd, clean runs, five mutations). The\n consumer dry-run catalog and output are not stored in this repo; they are\n handed to the workspace 00 layer.\n- CLAUDE.md GOVERNANCE-BASELINE dated entry.\n\nCo-Authored-By: Claude Opus 5.5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-10-31T10:52:48-07:00"}],"HeadCommit":{"Sha1":"d024dfe85721e112a2963bcb2aed4abc84863540","Message":"chore(evidence): record static 20/20 and test:scripts 609/609 at e799172\n\nRebinds the 19 static reports from the clean detached run of e799172\n(runId local-static-1793476729341-68527-f85f3688-c967-43e5-8979-e716418fe6b3)\nand extends the consumer-type receipt with the second adversarial round:\n36 cases red on 90fdd87, 214/214 targeted green, five mutations red. The\npre-existing release-verification timing race (V14) failed the first\npnpm check and the first standalone test:scripts; reruns from restored\nclean reports passed.\n\nCo-Authored-By: Claude Opus 5.5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-10-31T13:09:22-07:00"},"CompareURL":"luoanwu/base-framework/compare/01fb4befa02ffbef8f259700b9601817de87e05e...d024dfe85721e112a2963bcb2aed4abc84863540","Len":7}...
|
1793478121
|
Edit
Delete
|
|
42899
|
5
|
5
|
5
|
54
|
0
|
0
|
refs/heads/main
|
0
|
{"Commits":[{"Sha1":"01fb4befa {"Commits":[{"Sha1":"01fb4befa02ffbef8f259700b9601817de87e05e","Message":"chore(evidence): record static 20/20 and test:scripts 465/465 at ec1cd7b\n\nCo-Authored-By: Claude Opus 5.5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-10-27T20:37:10-07:00"},{"Sha1":"ec1cd7bee99cf24cde5ee5a2b8fef1cf3ebc8dc5","Message":"feat(f14): accept default-loopback overridable binds for data stores (C50)\n\nUser decision 2026-10-27: `${VAR:-127.0.0.1}` (loopback by default,\nexplicitly overridable) counts as loopback. Still red: `${VAR}`,\n`${VAR:?...}`, `${VAR:-0.0.0.0}` and `${X:+${X}:}` (all interfaces when\nunset). Triggered by hi-atelier VM compose. New assertions fail with the\nrelaxation disabled, pass with it.\n\nCo-Authored-By: Claude Opus 5.5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-10-27T20:35:40-07:00"}],"HeadCommit":{"Sha1":"01fb4befa02ffbef8f259700b9601817de87e05e","Message":"chore(evidence): record static 20/20 and test:scripts 465/465 at ec1cd7b\n\nCo-Authored-By: Claude Opus 5.5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-10-27T20:37:10-07:00"},"CompareURL":"luoanwu/base-framework/compare/26212ad8133557b95d954e97263753e77b5445c0...01fb4befa02ffbef8f259700b9601817de87e05e","Len":2}...
|
1793158634
|
Edit
Delete
|
|
42676
|
5
|
5
|
5
|
54
|
0
|
0
|
refs/heads/main
|
0
|
{"Commits":[{"Sha1":"26212ad81 {"Commits":[{"Sha1":"26212ad8133557b95d954e97263753e77b5445c0","Message":"chore(evidence): record static 20/20 and test:scripts 465/465 at d8e4582\n\nCo-Authored-By: Claude Opus 5.5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-10-27T18:33:43-07:00"},{"Sha1":"d8e45822f8b906a5a38f51bb51d4630601ae2b16","Message":"fix(f14): recognise pgvector images as data stores; record Linux Docker boundary (C50)\n\nThe work-order dev base runs pgvector/pgvector; the data-store pattern\nmissed it. New test is red under the old pattern, green after. Also note\nthat loopback-bound stores stay reachable through host.docker.internal on\nDocker Desktop (knowledge-cloud seven levels passed) but not on native\nLinux Docker.\n\nCo-Authored-By: Claude Opus 5.5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-10-27T18:31:29-07:00"}],"HeadCommit":{"Sha1":"26212ad8133557b95d954e97263753e77b5445c0","Message":"chore(evidence): record static 20/20 and test:scripts 465/465 at d8e4582\n\nCo-Authored-By: Claude Opus 5.5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-10-27T18:33:43-07:00"},"CompareURL":"luoanwu/base-framework/compare/4a504694a8ba4fd35e119ce09fef3856289b4ec9...26212ad8133557b95d954e97263753e77b5445c0","Len":2}...
|
1793151226
|
Edit
Delete
|
|
42659
|
5
|
5
|
5
|
54
|
0
|
0
|
refs/heads/main
|
0
|
{"Commits":[{"Sha1":"4a504694a {"Commits":[{"Sha1":"4a504694a8ba4fd35e119ce09fef3856289b4ec9","Message":"chore(evidence): record C51 static 20/20 at 09ea21e and runtime/UI/deployment/production at f4e3f6a\n\nCo-Authored-By: Claude Opus 5.5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-10-27T17:13:49-07:00"},{"Sha1":"09ea21ef273951258780d28f4866ed1117792410","Message":"docs(evidence): backfill C51 four-level freshness at clean f4e3f6a\n\nRuntime 490/0 (RLS enforce), UI 4x11, deployment 13 steps with 1 rollback,\nproduction 14 steps. Deployment levels first failed at stack start because\nthe local Docker address pools were exhausted; passed after freeing this\nround's own acceptance stack.\n\nCo-Authored-By: Claude Opus 5.5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-10-27T17:12:04-07:00"},{"Sha1":"f4e3f6ad23e82f5b665299d01500e4cf9bbb6da5","Message":"fix(d3): treat empty HOST as unset so it also falls back to loopback (C51)\n\n`process.env.HOST ?? \"127.0.0.1\"` passes an empty string (e.g. compose\n`HOST: ${HOST:-}`) straight to listen. Use || in both entries, as the\nAI人事系统 listen-host.ts already does, and make the C51 tripwire accept\nonly ||. Fifth negative (?? form) exits 1; green after restore.\n\nCo-Authored-By: Claude Opus 5.5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-10-27T17:01:58-07:00"},{"Sha1":"8e22a6d89ce1cb446f4f92b8131f5965cf690879","Message":"fix(d3): default the listen host to loopback and set HOST in the image (C51)\n\nFramework Owner chose HR F-7 option (a) on 2026-10-27. Both host entries\nused `process.env.HOST ?? \"0.0.0.0\"`, so a plain `pnpm dev` (demo auth by\ndefault) published the API on the LAN, and a derived repo's own loopback\nfix (AI人事系统 D-10) would be reverted by the next framework sync.\n\n- apps/api-nestjs/src/main.ts and apps/api-fastify/src/server.ts default\n to 127.0.0.1; exposure needs an explicit HOST (HOST=:: for IPv6).\n- apps/api-nestjs/Dockerfile runtime target sets ENV HOST=0.0.0.0, since\n loopback inside a container is unreachable through port mapping. The\n image is the single place that sets it; the compose file does not repeat it.\n- check:dual-backend C51 tripwire: loopback default in both entries, no\n hard-coded 0.0.0.0 in entries, Dockerfile runtime ENV HOST=0.0.0.0.\n Negative: four mutations each exit 1, green after restore.\n- backend standard, ADR-0010 D3, migration playbook, COMPATIBILITY,\n CHANGELOG, doctrine index and experience C51 updated.\n\nFull static chain 20 steps, test:scripts 465/465 on the dirty worktree.\n\nCo-Authored-By: Claude Opus 5.5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-10-27T17:00:05-07:00"}],"HeadCommit":{"Sha1":"4a504694a8ba4fd35e119ce09fef3856289b4ec9","Message":"chore(evidence): record C51 static 20/20 at 09ea21e and runtime/UI/deployment/production at f4e3f6a\n\nCo-Authored-By: Claude Opus 5.5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-10-27T17:13:49-07:00"},"CompareURL":"luoanwu/base-framework/compare/1740dc53f3eff71b45cdd1f78df82903818b75db...4a504694a8ba4fd35e119ce09fef3856289b4ec9","Len":4}...
|
1793146443
|
Edit
Delete
|