Repository navigation
feat(content-ops): support source-led full-frame video - #6979
Conversation
Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>
loopx-agent
left a comment
There was a problem hiding this comment.
Reviewer: model_agent · gpt-6.1-sol · OpenAI · runtime_reported · effort max
Approval conclusion (author-owned PR; GitHub blocks formal self-approval)
动机
需要展示图像、视频或三维场景的内容创作者。 同一段机制素材原先被再次缩成小图;现在可选择大画面,并在独立底栏保留来源说明。 原生准备、制作及工作台读回已验证更大的完整画面,并保留旧计划输出。 本PR不交付七方向最佳成片、听审或理解效果,也不安装全局App或替换公开视频基线。 其余创作方向、声音打磨、独立品质和理解比较仍未完成。
改动思路
沿已有 Agent 准备计划、能力验证、可选扩展计算、工作台查看的调用链增加一个显式选择。预先放大素材仍会被旧的固定内容区再次缩小,所以仅修改作者脚本解决不了问题。类型规则留在现有能力 owner,像素计算留在可选扩展,工作台只读同一份结果;无需新配置或审批系统。 本次边界是可选镜头构图及其真实制作/恢复路径,七方向成片与独立评测留在原研究工作中。 旧计划仍沿原构图;新计划改变摘要并撤销旧内容批准。标题在新模式中属于分镜元信息,需要观众看到的内容应放进素材、标题镜头或字幕;来源说明则继续绘入独立底栏。
| 路径 | 实际结果 |
|---|---|
| 省略构图或 editorial | 摘要、首帧、36帧解码和QA与基线相同 |
| full_frame 加当前扩展 | 完整素材按显示比例放入较大画面,来源另置底栏 |
| full_frame 加旧0.2扩展 | 旧扩展能编码,但缺少构图证据,核心拒绝就绪 |
具体改动
评审基准为 docs/reference/protocols/content-ops-media-v0.md,版本 6da69b1a4e67782f1d2049fc803b07dd40a1a506。plan-and-source-scope 对应来源摘要、构图归一化与非空body拒绝,已实现;execution-and-readback 对应精确修订、可选provider与真实文件验证,已实现;http-boundary-and-failure-behavior 对应原Goal/来源/文件边界和失败重试,已实现。本次扩展没有把更大的展示区解释为创意通过。
关键代码讲解
validateMediaPlan只在 excerpt/blender 接受新模式,并将省略或显式editorial归一化回旧结构;无效值、错误镜头类型、原来源和body约束继续拒绝。validateMediaResult要求实际provider回传的有序镜头ID与请求一致。缺少、重复、错误或额外ID都不能成为ready;Python适配层从同一已保存计划提供期望ID。render复用原文字换行器测量底栏,再完整容纳素材。视频在进入丢弃像素比例元数据的RGB流前,先烘焙显示比例;SAR=2的320×160样本实测为4:1,而不是被压回2:1。真实Blender仍由原有工程、RGBA、深度和重开检查验证。ContentMediaWorkbench仅在该模式的分镜/来源条目显示本地化标签,继续使用原制作、取消、错误、重试和下载入口。包版本、双语升级/停用/回滚说明与三张公开合成截图覆盖其余变化。
对主干的风险
最强风险是独立安装的旧renderer静默忽略新字段,仍把缩略布局标为成功。我用真实0.2扩展执行同一请求:它实际编码成功,但新结果校验拒绝就绪;随后新建的默认构图作品仍可就绪。素材四角、显示比例、短素材失败后新修订恢复,以及禁用扩展后的行为也通过实际入口检查。现有字幕、来源、修订和发布边界继续保留;只在文档中明确选择新模式时,标题才转为分镜元信息。
验证包括12项真实Python路径、11项TS测试、媒体单独类型检查、打包Chat与真实后端、36帧播放至结束且0掉帧、390px无溢出;6项direct及19项catalog/risk/boundary检查通过。四条Pillow弃用警告保留。全树 npm run typecheck:control-plane 的7条TS18047在独立干净基线和本head完全复现于未修改的conversation_binding.ts;这是独立的主线问题,仍保持失败。它是仓库required check,当前严格CQR和合并因此保持阻塞,不能把它改成optional来放行。
语义与 CI 对齐
新构图词汇属于composition局部契约;没有新增通用Goal状态或第二语义owner。diff advisory未识别该动态局部载体,因此人工逐分支核对其归一化、摘要和结果证据。旧默认摘要/PNG/全部解码帧/QA对照相同,新模式差异明确披露。Goal当前要求不读取远端CI,本评审只依赖本地原生证据。全树失败未降门或改写成通过。
我的整体评价
未发现本PR新增的阻塞缺陷,评审结论为APPROVE;严格质量与合并门因主线required类型检查失败继续hold。长程维度为preserved:复用相同持久修订、来源快照、结果重用与失败恢复。用户体验维度为improved:相同准备/制作入口提供更大的实际画面,已有意图授权下没有新增必答问题或JSON重填。类型规则留在现有能力 owner,像素计算留在可选扩展,工作台只读同一份结果;无需新配置或审批系统。 本次边界是可选镜头构图及其真实制作/恢复路径,七方向成片与独立评测留在原研究工作中。 这是一段可独立验证和回滚的有效增量;全树资格、安装生效、完整创作、主观听审与受众理解不可由该机械证据替代。精确head为 5d5902768e4108e5bbc1f05dbeed2ea3e7f837f8,另有CQR/merge hold,不宣称已合并。
English verdict: APPROVE — 5d59027. The opt-in framing reaches the real renderer and packaged workbench, preserves default plan/pixel behavior and rejects ignored-mode output from an actual0.2 provider. Native image/video/Blender and failure/recovery checks passed. Seven independently reproduced pre-existing required TypeScript errors keep strict CQR and merge on hold. Creative, audience and installed-App acceptance remain outside this slice.
…a-framing-20261021 Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>
loopx-agent
left a comment
There was a problem hiding this comment.
Reviewer: model_agent; gpt-6.1-sol; OpenAI; runtime_reported; reasoning_effort=max
Approval conclusion (author-owned PR; GitHub blocks formal self-approval)
动机
需要展示图像、视频或三维场景的内容创作者。同一段机制素材原先被再次缩成小图;现在可选择大画面,并在独立底栏保留来源说明。原生准备、制作及工作台读回已验证更大的完整画面,并保留旧计划输出。本PR不交付七方向最佳成片、听审或理解效果,也不安装全局App或替换公开视频基线。其余创作方向、声音打磨、独立品质和理解比较仍未完成。
改动思路
类型规则留在现有能力 owner,像素计算留在可选扩展,工作台只读同一份结果;无需新配置或审批系统。本次边界是可选镜头构图及其真实制作/恢复路径,七方向成片与独立评测留在原研究工作中。现有Agent准备的分镜沿同一MediaWorkspace进入可选渲染器,再经类型检查、文件hash和revision读回原工作台。预先放大素材仍会被旧固定小图再次缩小,所以应在现有合成owner增加明确选择;另建播放器、配置或审批系统都更重。缺省和显式editorial归一化为旧结构,只有full_frame进入摘要;画面完整按显示比例放入,来源说明单独测量,不覆盖原图文字。标题留作timeline元信息,必要可见标题由源画面、title镜头或字幕承载,文档明确此选择。
具体改动
关键代码讲解
- validateMediaPlan只在excerpt/Blender镜头允许full_frame;未知值、非空间镜头和非空body仍拒绝,缺省/editorial结构和旧摘要保持。新选择改变内容摘要,不能沿用旧批准。
- validateMediaResult将QA的full_frame_shots与已准分镜的有序ID精确比较;缺失、额外、重复或顺序不符不能ready。Python MediaWorkspace从同一计划传入期望列表,并仅投影存在的framing;没有第二个执行或发布owner。
- renderer.render复用实际字体测量包装器,保留四角和源比例,在独立底栏画来源。视频在raw RGB丢弃sample-aspect元数据前按DAR换算;旧editorial路径的像素已作成对比较。105秒内部/120秒进程界限、源hash、EOF失败和完整解码保持。
- ContentMediaWorkbench在既有timeline和source列表读回双语“大画面”标记,继续使用原制作、取消、重试和结果入口。可选loopx-media包及manifest升至0.3.0;双语指南说明安装升级、doctor、禁用及用新revision去掉该字段回退,没有自动全局安装。
规范基于改动前 docs/reference/protocols/content-ops-media-v0.md,spec_revision 6da69b1。criterion_id plan-and-source-scope 已实现:同一源hash/摘要/显式来源边界;execution-and-readback 已实现:同一revision、可选provider与完整文件核验;http-boundary-and-failure-behavior 已实现:既有Goal工作台及真实失败→修订→重试。它们约束原流程;本次构图是局部明确扩展,没有把新文档反当旧合同。13文件仍为同一275新增/25删除的媒体范围;本次相较上次review仅接入已合并README和独立修复6980,未继承旧批准。
对主干的风险
未发现阻挡性问题。主要风险是旧provider忽略新值仍返回缩略图,或新布局裁掉源文字/非方形像素比例。真实0.2.0旧扩展原先编码成功但缺模式证据,当前核心拒绝ready;同runtime默认作品仍ready。此证据、实际打包Chat和真实后端的播放/失败恢复/390px截图保留原5d5902768版本,逐项核对13个媒体、UI、provider、测试、文档和图片字节及相关依赖未变,故仍可复用;不把复用说成重新安装或重新录屏。
在本head重新执行12项Python(真实图像/视频/Blender4.5.12 LTS、RGBA/depth、工程重开、HTTP、源边界及禁用)、11项TS、完整控制面类型检查及6 direct+19 selected预合并检查,均通过,无skip/advisory;四条Pillow getdata弃用警告保留。默认同输入也重新运行:canonical plan、poster SHA、36解码帧和QA相同。原required七处TS18047失败完整保留,由PR6980及其独立评审修复后,当前base 1dff4b8b0b31efddfa5772577169d28c1662bab5与head类型检查通过,严格CQR通过,未降为optional或用admin替代资格。
语义与 CI 对齐
framing/full_frame_shots留在现有媒体协议,精确typed值和ID比较,无散落prose分类或通用Goal词汇。可选provider存在不等于启用,旧计划不增加字段/提示/调度/副作用;默认实际像素与摘要比较支持feature-off兼容。当前wait_for_ci=false,未查询、轮询或等待CI;既有七项依赖/模块、CI范围lint和前端构建证据因相应源码/manifest未变而保留。完整成片品质、听审、真实受众理解和全成本仍待原创作工作验收,软件播放和编码不替代这些结论。
我的整体评价
APPROVE,精确head f91114e。long_horizon preserved:同一来源、revision、失败记录和有界执行,错误结果仍不能成为ready;user_experience improved:有更大完整画面,复用已有Agent制作与工作台,无新增源路径/JSON表单或必需确认轮次。范围为justified_increment:一个完整可逆的原生构图选择,仍不等于七方向最佳成片或独立比较完成。复用既有owner、测量包装器和可选provider恰当,代码与维护成本相称;不应再扩为独立布局/审批框架。当前必须的本地检查和严格CQR已通过,仍需当前head readiness及已有授权才可合并。
English verdict: APPROVE — f91114e. Explicit spatial full_frame framing reaches the existing typed owner, optional renderer and workbench; defaults preserve canonical bytes and36 decoded frames. Current12 native/11 TS tests, full typecheck and6+19 local premerge checks pass. Prior packaged/old-provider evidence remains applicable after a byte-level invalidation audit; historical failures and4 warnings remain recorded. Creative/listening/comprehension/full-cost acceptance and global installation are outside this increment; CI was not consulted under the resolved policy.
Image/video excerpts and Blender scenes currently share a fixed studio header and thumbnail rectangle, which shrinks source text and constrains source-led compositions. Add optional per-shot
framing: "full_frame": preserve the whole picture and its display aspect, place source attribution in a measured strip, and retain the title in the timeline. Existing omitted/editorial plans keep their canonical digest and layout.The Agent prepares this choice in the existing content-ops brief. The packaged Content production workbench renders, cancels, retries and reads it back without another source-path/JSON form. TypeScript owns admission and result checks; loopx-media 0.3.0 owns local computation. An older renderer that ignores the field cannot return ready. Source hashes, content-approval invalidation, default-off behavior and publication authority remain with their existing owners. The bilingual protocol/package guide covers explicit upgrade/doctor, disable and composition rollback.
Validation
f91114e18474a4b0e0ea9126c293fe29f858f3ba.Bounded refactor: reuse the existing measured text wrapper for attribution while preserving editorial output. New framing values are composition-local protocol choices; no generic Goal vocabulary or independent capability/settings owner.
Visual evidence
Actual packaged workbench, public synthetic source, macOS, originally tested at
5d5902768e4108e5bbc1f05dbeed2ea3e7f837f8. Current head isf91114e18474a4b0e0ea9126c293fe29f858f3ba, against main1dff4b8b0b31efddfa5772577169d28c1662bab5. All 13 media/provider/UI/docs/test/image files remain byte-identical; the integrated base changes only the independently verified recovery null checks and README pair, so packaged viewport/playback, old-provider and default-pixel evidence remains applicable. Narrow capture is scrolled to the movie. These are software/visual checks, not audience or full-film quality acceptance. The existing public film baseline is unchanged.Current qualification
The original strict change-quality failure is retained. The mainline prerequisite is now fixed, the new exact-scope change-quality receipt passes, and local required validation passes at the current head. The new exact-head self-review was published and read back. Native merge-readiness returned ready for that unchanged head; it was merged as
282f5996467808fbfe33ec1eb1f0b1f29cc0b137. The older self-review and failed qualification remain historical evidence. This candidate does not change the public film baseline or claim finished creative/listening/comprehension evaluation.