feat(influence): EP1《执行层》3D 表意强化与官方口径勘误,终渲交付 13:59.90; - #1127
Merged
ThreeFish-AI merged 4 commits intoSep 6, 2026
Conversation
对照 Anthropic 官方文档原文逐条复核《执行层》全部官方断言(取数 2026-09-06), 修正三处、补齐一个系统性缺口。 内容修正(3 句,字数 3979 → 3989): - p0-06 第五样勘误:「护栏」→「把这些串起来的循环」。官方 glossary 原文是 "the loop that chains actions together"。这不是口径偏差——本集整整 14 分钟 讲的就是那个循环,P0 命名帧却把它从官方定义里漏掉。改对后叙事反而收紧: P0 埋下「循环」、P1 第一句直接接上。与 p5-05 的四件套不冲突(两个官方来源, 交集恰好是「循环」)。 - p4-23 改抗漂移口径:「三十一个」→「三十多个,官方文档还在往上加」。官方 hooks 事件表实测已从 31 漂移到 33;该数属活数据,踩本集禁用清单第 1、2 条。 绝对数降入画面角标并带取数日期。 - p6-06 取数日期同步为 2026 年 9 月。 信源台账(根因修复): Harness Engineering 改造引入的六个官方锚点此前一条都不在 sources.toml 里, 导致「写错了没有事实源能拦、写对了也会随官方更新悄悄陈旧」。现补录 cc-glossary / cc-how-it-works / cc-hooks / cc-permissions / cc-auto-mode / cc-harness-blog,verify 受检面 12 → 18 条 FAIL 0;source-notes 新增 「轨 C · 官方文档」与 §十 官方断言表(12 条逐条附原文)。 补录前 verify 报「受检 12 · FAIL 0」全绿——门是绿的,只因为出问题的六页 不在受检集里。 分镜同步:0-C 第五辐条、4-F 计数 31→33、4-C/5-D 的 3D 画面描述。 🤖 Generated with [Claude Code](https://github.com/claude), [CodeX](https://openai.com), [Gemini](https://github.com/apps/gemini-code-assist) Co-Authored-By: Aurelius Huang<threefish.ai@gmail.com>
3D 能力(PR #1123 引入)此前只用在 P0/P6 的系列身份层板上,全片 39 个 beat 里 37 个没有 3D——能力已具备而未用于表意。本轮挑两处「平面表达不出来」的落点。 新增 video/src/components/solids-3d.tsx(seeded 档,零 motion hook,运动量全部 prop 注入),三条宪法写进文件头: - 只做直角体不做圆/环/曲面——画面里的「圆」已被 LoopRing 独占,它是「循环始终 不变」被看见的唯一载体;副产品是元素词表被钉死在已跑通的那一组,零新类型面。 - 读感来自转物体不来自动相机——正交 zoom:1 的等距映射是 domToWorld 存在的前提, 相机零动画同时白送无头渲染确定性。 - 颜色永不是「光 × 材质」的运行时乘积——零光源、只用 unlit 材质,明暗靠手写 面色梯度(ISSUE-177 教训二的结构化)。ISSUE-177 教训一写进类型:Stage3D 的 style 在类型上 Omit 掉定位属性,实体原语一律返回 group 不返回 DOM。 5-D「壳」:p5-17 是全片唯一把整套结构命名为三维实体名词的句子,而原实现只是 一个 3px 边框 div(读作「框」)。框与壳的差别是维度差——观众要读出「终端在壳 里面」,需要看见壳壁的内表面。改为四层实心板嵌套,层序即 z 序(循环最内、插口 最外),终端沉在井底,「挂在外面」成为几何事实。 4-C「插座插头」:插座的定义就是一个凹进去的洞,而原 22×22 方框只是画在墙上的 符号,「插入」这个动作在平面上根本不存在。3D 咬合时插头侧棱被口沿吃掉的遮挡, 是「它真的进去了」的唯一无歧义信号。只做四个插口中的第一个(口播说的是「一张 卡片插入」,四个全做反会把另三个读成空洞)。 PlateSlab3D 收敛到 Slab3D:同帧 PNG md5 逐字节相同;顺带删除对 basic 材质是 空操作的 ambientLight。收敛边界画在「画布之内、group 之内」——刻意不让它改用 Stage3D,因为它的画布带着两个只对它成立的假设(ISSUE-177 教训一会重演)。 时序零改动:四层合拢开在既有 26 帧 shell 进度的子窗口(frozen win())、插头直接 吃既有 useSpring('snap'),无新 hook、无新 @动词、总帧数由 manifest 结构性推导。 Plug3D 内部对 seat 取 min(seat,1):snap 的 ζ=0.6 峰值 1.095,不钳制会穿透井底; 过冲转为棱线提亮不丢手感。 5-B 体积柱评估后不做(决策入注释):试做发现侧板必然遮挡章名标签与 20–28 实测带 ——带是仪器、柱是被测物,遮住仪器等于丢掉这幕的判据;且「一根芯贯穿四柱」本身 要否决,四柱是四个版本的独立实测,连续芯等于断言「同一段代码的四次采样」。 P0-C 第五辐条随内容勘误改为「循环」并染 core 色,成为 P1 环诞生的视觉引信; retrofit-gallery 新增 housing close 三态与 socket seat 四态(含过冲峰 1.095 的 穿底判据)两格。 🤖 Generated with [Claude Code](https://github.com/claude), [CodeX](https://openai.com), [Gemini](https://github.com/apps/gemini-code-assist) Co-Authored-By: Aurelius Huang<threefish.ai@gmail.com>
skills/06 新增「3D 点缀(@remotion/three)」节:此前该文件 three/3D/angle 三个 关键词零命中——3D 已在 EP1 用了一轮却从未沉淀为跨集规格,EP2–5 跟进时无据可依。 现补齐三条宪法、读色契约(含「面要被看见必须与 bg 拉开」「多层嵌套必须关 edges」 两条实景结论)、构造经验(实心板嵌套而非边框拼框、弹簧过冲要钳行程、一 beat 一 画布、z 层级属调用点契约)与验收方式(收敛以逐字节相同为门、3D 是 --check 盲区 必须逐帧目视)。 issue.md 补四条: - ISSUE-178 口播断言在事实源里没有锚点也能进成片——真实性纪律写在散文里,没有 任何门在执行。附带教训:「门是绿的」不等于「查过了」,先问它在看什么。 - ISSUE-179 静态口径写死的官方数字会周期性陈旧(31 → 33)。判断是不是活数据, 不看它此刻是否精确,而看它未来会不会变;结构性表述比枚举计数稳定得多。 - ISSUE-180 3D 化「壳/井」用四条边框拼会读成一堆细线框——面色与 bg 同色时 3D 只剩棱线。三轮实景抽帧才定位。 - ISSUE-181 两个渲染进程并发写同一 mp4 → 索引损坏、抽帧 seek 全落回第 0 帧, 伪造出 52 条 WARN。与 ISSUE-177 互补:那条说「低差异不等于无回归」(判据不 敏感),这条说「高 WARN 也未必是真回归」(输入已损坏);异常 WARN 集中在未改动 的幕、而改动的幕反而干净,这个分布本身就是产物损坏的信号。 EP1 README 更新交付台账:终渲 13:59.90(25197 帧,较前版 +1.10 秒)· 42.2 MB · 终渲全分辨率复检 FAIL 0 WARN 0(草渲期唯一的哈希 WARN 在全分辨率下消失,佐证 其为假阳性)· beat-heads 39 镜 ×4 帧 FAIL 0。 🤖 Generated with [Claude Code](https://github.com/claude), [CodeX](https://openai.com), [Gemini](https://github.com/apps/gemini-code-assist) Co-Authored-By: Aurelius Huang<threefish.ai@gmail.com>
评审对 3D 表意强化提出五条,逐条修复并以实机抽帧自证。
## 1. 5-D 四层壳的层序被渲染反了(成片缺陷)
`depth = SHELL_RIMS.length - 1 - i` 与数组声明的「自内向外」相反,i=0(循环)
拿到 depth=3 ⇒ 尺寸最大、面色最暗、棱线最淡。抽帧 frame 23510 实证:由内向外
是 插口(mech)/闸门(deny)/分发表(mech)/循环(core),与 storyboard、README、组件
文档块三处「循环最内、插口最外」全部相反——口播此刻正说「留了插口的壳」。
根因是「里面」由 z、尺寸、色阶三个量共同表达,而只有 z 被对齐;正交投影下 z 只
体现为极小的遮挡差,真正决定读法的是尺寸。改 `depth = i` 后三项同向自洽。
`dev/retrofit-gallery.tsx` 的 HousingCell 手抄了同一段反转逻辑,故一并修正——
评审面复制被评审的逻辑,就验不出自己复制来的错误。
## 2. 壳画布余量漏算合拢期的 z 后推量
原 `+60` 对称余量既误用 `SHELL_DEPTH`(26) 当外扩量、又完全没计入
`-(1-close)*180` 的后推量。以 `THREE.Euler('XYZ',−12°,8°)` 投影最外层八角实测:
需 W≥1397 / H≥751,实际只有 1394×674 ⇒ 合拢初期最外层底缘被画布下沿在 y=876
直切 635px(frame 23502 实证)。改为 `SHELL_PAD_X=66` / `SHELL_PAD_Y=142`,
并把 `3` 换成 `SHELL_RIMS.length - 1`、`180` 提为 `SHELL_PUSH_IN`。
安全带复核:最外层底缘 close=0 落 915.5、close=1 落 878.4,均 < SAFE_TOP_Y 920。
## 3. `Socket3D` 的 `skin.face` 是空操作
井底恒 `theme.bg`、井壁恒 `SOCKET_WALL`,`face` 从未被读取,但两个调用点都传了
`face: theme.panel`。类型收窄为 `Omit<SolidSkin, 'face'>`,由编译器拦住这类
「看起来在设色、实际没有效果」的调用。4-C 帧 17392 修前后逐像素相同。
## 4. 删除 5-B 那批无消费者的 3D 导出
`Bar3D` / `BAR_SIDE` / `BAR_YAW` / `domToWorld` / `SHELL_INNER` 全仓零调用,而
同一轮已在 `GrowthBars` 注释里明确「本幕评估后不做 3D」。它们带着文件里最长的
规格注释,易被误读为现行口径;相关结论已公共化在 skills/06。原语层 356 → 298 行。
## 5. 4-C 锚点注释是上一版残留
注释写「节点 1(ang=-20°)」而代码是 `i === 0`(ang=-60°),且引用了不存在的
`SocketPlug` 符号。
## 验证
- `tsc --noEmit` 通过;`node --test scripts/motion.test.ts` fail 0
- 全分辨率抽帧 f17392 / f23502 / f23510 / f23525 + retrofit-gallery f40 目视复检
- 数值复检:画布四边(col 258–260 / 1658–1660、row 915–918)零硬切edge
- ⚠️ `out/final.mp4` 的 5-D 段已过期,需重渲后重跑 QA
经验沉淀入 ISSUE-182(判据要落在成片像素上而非某个中间量;评审面不可手抄被评审
的逻辑;3D 画布余量必须按投影算而非按几何尺寸算)。
🤖 Generated with [Claude Code](https://github.com/claude), [CodeX](https://openai.com), [Gemini](https://github.com/apps/gemini-code-assist)
Co-Authored-By: Aurelius Huang<threefish.ai@gmail.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
背景
p0-06是事实性错误且错在本集主线上(官方 glossary 说 Harness 供给的第五样是「把动作串起来的循环」,稿子写成了「护栏」——而这一集整整 14 分钟讲的就是那个循环)。核心变更
p0-06第五样「护栏」→「把这些串起来的循环」(官方原文the loop that chains actions together);p4-23「三十一个」→「三十多个,官方文档还在往上加」(官方事件表实测已漂移到 33,且该数属活数据、踩本集禁用清单);p6-06取数日期。sources.toml里,导致「写错了没有事实源能拦、写对了也会随官方更新悄悄陈旧」。现补录cc-glossary等 6 条,verify受检面 12 → 18;source-notes.md新增「轨 C · 官方文档」与 §十 断言表(12 条逐条附原文)。video/src/components/solids-3d.tsx(356 行原语层,seeded 档,零 motion hook、运动量全部 prop 注入)。落地两处——5-D「壳」(p5-17是全片唯一把整套结构命名为三维实体名词的句子,原实现只是 3px 边框 div;改为四层实心板嵌套、层序即 z 序,终端沉在井底)与 4-C「插座插头」(原 22×22 方框只是画在墙上的符号,「插入」动作在平面上根本不存在;3D 咬合的侧棱遮挡是「它真的进去了」的唯一无歧义信号)。PlateSlab3D收敛到Slab3D,同帧 PNG md5 逐字节相同。LoopRing任何形式的 3D 化(它是「循环始终不变」被看见的唯一载体);5-B 体积柱试做后回退(侧板会遮挡 20–28 实测带——带是仪器、柱是被测物,遮住仪器等于丢掉这幕的判据),决策已写入注释。skills/06新增「3D 点缀」节(此前该文件three/3D/angle三个关键词零命中,EP2–5 跟进无据可依);issue.md补四条缺陷经验。风险与回滚
--check判据的完全盲区(它只看黑帧/冻帧/字幕带/对比度),本轮 5-D 连修三轮才成立,全靠逐帧目视——若后续有人改动 3D 而只跑机器门,缺陷会静默溜过;② 3D 画布与 DOM 的 z 层级、面色与 bg 的对比度属人工判据,无自动门守护。Slab3D展开回三节点(12 行);solids-3d.tsx为新增文件,删除即回到基线。冻结档(remotion.config.ts/package.json)零改动,无需动skeleton.toml的 drift 条目。验证证据
check --check-scenes --check-motionFAIL 0 ·--check-themeFAIL 0 ·verify_skeleton --strict零漂移 ·check_series2 系列 8 集 292 文件 FAIL 0 ·source_ledger verify18 条 FAIL 0 ·audit --episode 112/12 ·tsc --noEmit通过 ·motion.test.ts通过(运动层零改动)。--beat-heads 4(39 镜 ×4 帧)FAIL 0 WARN 0。socket seat 1与seat 1.095画面完全相同,证明过冲峰下插头未穿透井底。out/final.mp413:59.90(25197 帧,total_duration_in_frames复算恒等)· 1920×1080@30 · h264/yuvj420p + aac 189kb/s · 42.2 MB;较前版仅 +1.10 秒,双口径均落预算窗 [13.0, 14.6]。影响范围
episodes/claude-code-explained-video/video/)。frozen 运动层七文件一字未动(8 集 md5 仍全同);LoopRing/motifs.tsx/theme.ts零改动;Plate/HarnessBadge零改动(ISSUE-177 防范)。skills/06(跨集规格,EP2–5 将消费)、issue.md(+4 条)、EP1 README/source-notes/verification/storyboard。@remotion/three/three/@react-three/fiber/@types/three已在 feat(influence): EP1 落地动效工具三轨改造——paths/three 增强簇 + Lottie 管线 + HyperFrames PoC #1123 装齐,angle配置已在位)。Next Best Action
GateRouter被 3-B/3-C 复用、4-D 有缩小副本、3-F 与 4-G1 各一条 rail——四处必须同语言否则闸门视觉分裂,宜作独立批次。grep -l code.claude.com零命中),本轮已在 EP1 建立轨 C 范式。skills/06已具备可复用依据。🤖 Generated with Claude Code