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