Skip to content

feat(content-ops): support source-led full-frame video - #6979

Merged
loopx-agent merged 2 commits into
mainfrom
codex/operations-media-framing-20261021
Oct 21, 2026
Merged

loopx-agent merged 2 commits into
mainfrom
codex/operations-media-framing-20261021

Conversation

@loopx-agent

@loopx-agent loopx-agent commented Oct 21, 2026 •

Copy link
Copy Markdown
Collaborator

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

  • 11 TypeScript tests and the full control-plane typecheck passed at f91114e18474a4b0e0ea9126c293fe29f858f3ba.
  • 12 Python tests passed with the real optional renderer and Blender 4.5.12 LTS, including image/video corner retention, non-square-pixel display aspect, project reopening, HTTP bytes, failure/recovery and disabled provider. Four Pillow deprecation warnings retained.
  • Base/head default parity: identical canonical plan, poster SHA, all 36 decoded frames and mechanical QA on a synthetic video source.
  • Built packaged Chat with real loopback backend: render/playback to ended (36 frames, 0 dropped), failed short source → revised plan → successful retry; 390px overflow 0. No installed-App upgrade or creative/comprehension claim.
  • Premerge: 6 direct checks and 19 selected checks passed; 7 dependency/module invariants and CI-scoped lint passed. No paid generation or public movie upload.
  • The required mainline typecheck prerequisite was independently reviewed and merged in PR #6980. Its seven historical TS18047 failures remain recorded; the current full control-plane check passes. The native renderer/Blender and TS suites, plus all 6 direct and 19 selected premerge checks, were rerun at the current head.

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 is f91114e18474a4b0e0ea9126c293fe29f858f3ba, against main 1dff4b8b0b31efddfa5772577169d28c1662bab5. 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.

Editorial Full frame
Before After

390px workbench

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.

Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>

@loopx-agent loopx-agent left a comment

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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 loopx-agent left a comment

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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镜头或字幕承载,文档明确此选择。

具体改动

关键代码讲解

  1. validateMediaPlan只在excerpt/Blender镜头允许full_frame;未知值、非空间镜头和非空body仍拒绝,缺省/editorial结构和旧摘要保持。新选择改变内容摘要,不能沿用旧批准。
  2. validateMediaResult将QA的full_frame_shots与已准分镜的有序ID精确比较;缺失、额外、重复或顺序不符不能ready。Python MediaWorkspace从同一计划传入期望列表,并仅投影存在的framing;没有第二个执行或发布owner。
  3. renderer.render复用实际字体测量包装器,保留四角和源比例,在独立底栏画来源。视频在raw RGB丢弃sample-aspect元数据前按DAR换算;旧editorial路径的像素已作成对比较。105秒内部/120秒进程界限、源hash、EOF失败和完整解码保持。
  4. 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.

@loopx-agent
loopx-agent merged commit 282f599 into main Oct 21, 2026
17 of 40 checks passed
@loopx-agent
loopx-agent deleted the codex/operations-media-framing-20261021 branch October 21, 2026 06:06
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant