Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
82 commits
Select commit Hold shift + click to select a range
93f6f46
fix(perceives): repair malformed batch-merged table/figure captions
ThreeFish-AI Jul 6, 2026
b4057f6
fix(perceives): suppress run-on text echo of grid-backed tables
ThreeFish-AI Jul 6, 2026
3de8e3c
fix(perceives): detect whitespace-aligned tables so stage not skipped
ThreeFish-AI Jul 6, 2026
12ef2c2
fix(perceives): dedup table's embedded caption vs standalone bold cap…
ThreeFish-AI Jul 6, 2026
f88c37e
Merge pull request #1058 from ThreeFish-AI/routine/pdf-fidelity-patro…
ThreeFish-AI Jul 6, 2026
f3e2fc4
refactor(scheduler-ui): Scheduler 页对齐 Routine + Executions 全量分页与筛选栏单行…
ThreeFish-AI Jul 6, 2026
eda637a
fix(scheduler-ui): 修复分页页码越界空页并新增 All 时间窗; (#1060)
ThreeFish-AI Jul 6, 2026
bb54d71
fix(perceives): PDF→Markdown 高保真修复(Attention Is All You Need 巡检) (#1064)
ThreeFish-AI Jul 7, 2026
510c16b
fix(perceives/pdf): 清理 PyMuPDF 数学标记碎片残片,消除公式重复 (#1061)
ThreeFish-AI Jul 7, 2026
31adaa9
fix(perceives): PDF→Markdown 高保真多项缺陷修复(巡检收敛) (#1062)
ThreeFish-AI Jul 7, 2026
dd5a711
fix(perceives): PDF 保真巡检 — 跨页 figure 碎片孤儿抑制 + 散文误包 inline 数学解包 (#1063)
ThreeFish-AI Jul 7, 2026
aba220c
chore(scheduler): PDF Fidelity Patrol 巡检节奏 3600s→600s; (#1065)
ThreeFish-AI Jul 7, 2026
1f87dd6
docs(agents): 协作协议新增「UI 表格设计规范」(列宽固定、溢出省略 + Tooltip);
ThreeFish-AI Jul 8, 2026
0841af0
fix(perceives/pdf): 保真巡检 e669a5ea — 公式重复去重 + affiliation 上标 + figure …
ThreeFish-AI Jul 8, 2026
91b3692
fix(perceives): PDF 保真巡检修复(figure heading 降级 + 标题连字符保护) (#1067)
ThreeFish-AI Jul 8, 2026
f1a8ec4
fix(perceives): PDF→Markdown 高保真多项缺陷修复(Self-Harness 巡检) (#1068)
ThreeFish-AI Jul 8, 2026
17c6a5b
fix(perceives): PDF 保真巡检 — 跨引擎表格回声去重/figure标签簇抑制/作者块math解包 (#1069)
ThreeFish-AI Jul 8, 2026
287e264
style(negentropy-ui): 表格 UI 全局对齐 Routine/Scheduler 设计规范; (#1070)
ThreeFish-AI Jul 8, 2026
37e9031
feat(patrol): PDF 巡检状态落库 + Documents「巡检状态」列 + 「重置为未拟合」二次巡检 (#1071)
ThreeFish-AI Jul 8, 2026
3da332b
fix(patrol): reconcile 巡检态以最新 updated_at 非 cancelled 终态 Routine 为权威(#…
ThreeFish-AI Jul 8, 2026
0abb6f3
docs(AGENTS): 新增 UI 表单设计规范(label 与输入控件同行且 label 占 1/12 宽度);
ThreeFish-AI Jul 8, 2026
634bf5c
fix(patrol): 移除 _select_next_pending_doc 命名门控,未巡检无标题 PDF 不再被误判为「无待检」;…
ThreeFish-AI Jul 8, 2026
8cc4977
style(negentropy-ui): 表单内联化与表格系统性对齐设计规范 (#1074)
ThreeFish-AI Jul 8, 2026
403fea4
feat(patrol): PDF Fidelity Patrol 三杠杆拟合 + 真实 wiki 渲染闭环改造 (#1075)
ThreeFish-AI Jul 8, 2026
fc25287
fix(patrol): selector 排除已删除文档 + 源 blob 丢失优雅降级(source_unavailable); (#…
ThreeFish-AI Jul 8, 2026
2fcdbff
fix(perceives/formatter): 中文 PDF 保真修复(人名译名伪公式 + 标题末尾句号) (#1077)
ThreeFish-AI Jul 9, 2026
2d826ab
fix(negentropy-ui): Corpus Documents 列表 Name 列溢出截断 + 侧栏回退按钮美化 (#1078)
ThreeFish-AI Jul 9, 2026
d72681b
feat(negentropy-wiki): Markdown 代码块/公式/Mermaid 注入 notranslate 跳过浏览器翻译…
ThreeFish-AI Jul 9, 2026
3759bd9
build(deps): 升级 pnpm 至 11.10.0;
ThreeFish-AI Jul 9, 2026
9f14cb9
feat(patrol): 收紧 PDF 高保真巡检合格阈值 95→99; (#1080)
ThreeFish-AI Jul 9, 2026
a89b9d7
feat(negentropy-ui): 人机交互转录向 Conductor 再次对齐——机侧徽章/用户头像/耗时计时/长消息折叠; (#…
ThreeFish-AI Jul 9, 2026
ca9106c
fix(patrol): 巡检 harness 补全图片 bake 与文本保真判定,消除四类检测假缺陷 (#1086)
ThreeFish-AI Jul 10, 2026
62249fa
fix(perceives): 重组 docling PDF 拆字(drop-cap/连字/名跨行)修复文本保真 (#1082)
ThreeFish-AI Jul 10, 2026
bc72393
skill(pdf-fidelity-restore): 沉淀 inner-loop staging 图片 serving V1 carv…
ThreeFish-AI Jul 10, 2026
804e31f
build(deps): 升级 soupsieve 至 2.8.4 修复 CVE-2026-49476/49477; (#1087)
ThreeFish-AI Jul 10, 2026
267a504
fix(perceives/patrol): 预筛适配连续滚动 wiki + 注册客观验证命令 (#1083)
ThreeFish-AI Jul 10, 2026
bdf0d98
fix(patrol): 抢救 #1084 的 dev 静态资源路由与标题检测两处独立修复 (#1088)
ThreeFish-AI Jul 10, 2026
d183e8f
feat(agents): 六翼单例收敛——tools 运行时回源 + 后台 LLM 经 Faculty 产出; (#1089)
ThreeFish-AI Jul 11, 2026
e8d3e3a
feat(definitions): 定义源统一入库为 SSOT + graph-from-DB root agent; (#1090)
ThreeFish-AI Jul 11, 2026
90bb54a
fix(site-header): 修复超长面包屑标题致全局导航组换行左移,改为单行右靠并截断标题; (#1091)
ThreeFish-AI Jul 20, 2026
e707cf1
fix(patrol): wiki 放行 data: 图片协议 + 校准验证器与巡检文档现实对齐 (#1092)
ThreeFish-AI Jul 20, 2026
6c65b90
fix(perceives): 修复 Perceives CI Security Audit——bandit B310 豁免 + pip-…
ThreeFish-AI Jul 20, 2026
1dc6da5
fix(patrol): PDF 高保真巡检三处度量/保真修复(断图假阳性+CJK子串度量+矢量图文字回补) (#1094)
ThreeFish-AI Jul 20, 2026
fc5c367
docs(agents): 扩充 UI 表单设计规范——label 超宽截断+Tooltip 及新增字段说明文案规范;
ThreeFish-AI Jul 20, 2026
8c34491
build(deps): 升级 pnpm packageManager 至 11.15.1;
ThreeFish-AI Jul 20, 2026
dfd6b84
fix(perceives): 修复 PDF→Markdown 正文代码块化与目录截断(切片围栏失衡根因); (#1095)
ThreeFish-AI Jul 21, 2026
02b1785
fix(perceives): 修复段内自然换行被误判为段落分隔(PyMuPDF 几何分段根因); (#1096)
ThreeFish-AI Jul 21, 2026
72cf331
feat(knowledge): 文档列表新增按名称/作者的模糊搜索; (#1097)
ThreeFish-AI Jul 24, 2026
a959a99
build(deps): 升级 pnpm packageManager 至 11.17.0;
ThreeFish-AI Jul 28, 2026
e3809ac
docs(research): 新增 Snowflake 数据云平台深度调研文档; (#1098)
ThreeFish-AI Aug 4, 2026
4c1183d
fix(cli): Phase 3 PostgreSQL 探测新增自愈链(残留 postmaster.pid / brew error 态);
ThreeFish-AI Aug 4, 2026
0f0f200
docs(research): 规范化 Snowflake 调研文档 Markdown 表格排版;
ThreeFish-AI Aug 4, 2026
05ad6dd
docs(context): 新增 Context Layer 上下文治理层架构方案; (#1099)
ThreeFish-AI Aug 4, 2026
9a8b9ec
docs(video-package): 新增 arXiv:2607.13104 §5 基座模型自我改进科普视频完整制作包; (#1100)
ThreeFish-AI Aug 16, 2026
6198ea3
feat(video): 新增自进化智能体科普视频工程(论文笔记/逐字稿/分镜/Remotion 全链路) (#1101)
ThreeFish-AI Aug 16, 2026
fb2fe6f
feat(video): 《上线之后,AI 才开始上学》经验时代综述科普视频工程 + 公共视频制作管线沉淀 (#1102)
ThreeFish-AI Aug 17, 2026
9dd5661
feat(video): 《会写代码的 AI,开始给自己写代码》自进化编码智能体综述科普视频工程 + 生产层技能规格沉淀 (#1103)
ThreeFish-AI Aug 17, 2026
8502a5e
feat(tts): 科普视频管线支持 IndexTTS-2.5 声音克隆配音(双引擎 + 风格控制 + 操作手册) (#1104)
ThreeFish-AI Aug 17, 2026
4248d41
feat(video): 自进化系列三集科普视频内容升级与本人音色克隆配音 (#1105)
ThreeFish-AI Aug 18, 2026
a48458e
fix(video): 三集克隆配音升级分支六条评审意见修复(缓存键/坐标/口径/笔误/死代码) (#1106)
ThreeFish-AI Aug 18, 2026
f7d7281
docs(video-package): 移除已废弃的轻量制作包模式,同步更新公共管线 README
ThreeFish-AI Aug 18, 2026
cb871a5
feat(tts): 新增单句声音小样试听脚本,声音克隆手册补齐试听章节 (#1107)
ThreeFish-AI Aug 19, 2026
62a6b3f
feat(video): 系列发布顺序调整、第一集 v3 内容校准与音色重配、科普视频管线基建沉淀 (#1108)
ThreeFish-AI Aug 20, 2026
a025a06
feat(tts): IndexTTS-2.5 专业用法沉淀:上游能力接通、读法修复与循证文档 (#1109)
ThreeFish-AI Aug 21, 2026
e2fb125
feat(video): 《拆解 Claude Code》、Pipeline Series、B 型信源取证基建 (#1110)
ThreeFish-AI Aug 21, 2026
12ddf1f
refactor(influence): media/ 迁移为 apps/negentropy-influence/(分层布局)+ 公共层…
ThreeFish-AI Aug 21, 2026
24f1ae7
refactor(influence): 收敛 Main.tsx 两条骨架漂移登记——逃逸口用完即收; (#1112)
ThreeFish-AI Aug 21, 2026
03459b7
feat(video): 《Claude Code 通俗全解》系列五集制作战役——四集新建 + 首集优化 + 批量管线基建 (#1113)
ThreeFish-AI Aug 22, 2026
3b82639
feat(video): 五集系列改造为《Claude Code Harness Engineering》——官方锚点重定位 + 去站点化…
ThreeFish-AI Aug 24, 2026
30f099c
build(deps): 升级 pnpm packageManager 版本至 11.25.0;
ThreeFish-AI Sep 1, 2026
1fe251b
style(tts): 格式化 INDEXTTS-2.5-ADVANCED.md 表格列对齐(无内容变更);
ThreeFish-AI Sep 1, 2026
4022d0c
docs(agents): 新增精简注释协作规范条款;
ThreeFish-AI Sep 1, 2026
c9f8d70
build(deps): pnpm 升级至 12.2.1 并阻断嵌套 install 覆写根 lockfile; (#1116)
ThreeFish-AI Sep 1, 2026
f48aa69
fix(wiki): 新增 remark-math-sanitize 插件净化 PDF 语料病态公式,消除构建期 KaTeX 告警与渲染缺…
ThreeFish-AI Sep 2, 2026
17083bd
fix(wiki-export): 启动期以进度与统计取代逐条 blob 日志刷屏; (#1119)
ThreeFish-AI Sep 2, 2026
fffc634
docs(tts): 补声音克隆内容侧噪声地板判据,勘误 emo_bias 立论并落档二轮选段勘探; (#1118)
ThreeFish-AI Sep 2, 2026
00306d9
chore(agents): 协作协议与外部规范文档上移至用户级全局配置,仓库不再承载 Agent 指令源;
ThreeFish-AI Sep 3, 2026
f73b1ec
feat(influence): 科普视频动效建模与复用——frozen 运动层 + 《执行层》全片重制验证 (#1120)
ThreeFish-AI Sep 3, 2026
cf00993
docs(research): 新增量化与投资科学分组暨凯利公式投资数学文献,并收口指令源上移遗留死链 (#1121)
ThreeFish-AI Sep 4, 2026
38d8b8e
docs(research): 新增视频与动效生产分组暨动效建模与 Web 可视化搭建工具全景调研; (#1122)
ThreeFish-AI Sep 4, 2026
44ee713
feat(influence): EP1 落地动效工具三轨改造——paths/three 增强簇 + Lottie 管线 + HyperF…
ThreeFish-AI Sep 5, 2026
fb8fb1a
fix(ci): 修复 1.x.x 特性列车两处安全门——perceives Security Audit 新披露漏洞与 influenc…
ThreeFish-AI Sep 5, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
24 changes: 17 additions & 7 deletions .agent/skills/pdf-fidelity-restore/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -35,12 +35,17 @@ Markdown,并通过浏览器逐页对比将差异修复至完全一致。
4. **等待完成**:轮询文档 `markdown_extract_status` 至 `completed`(失败则查 `markdown_extract_error` 并 `refresh_markdown` 重试)。
5. **渲染核对**:在 Documents 页 View 渲染结果(react-markdown + remark-gfm/math + rehype-katex/raw/highlight/sanitize)。
6. **逐页对比**:按上「一比一还原范围」逐页 / 逐模块比对源 PDF 与渲染 Markdown,逐条记录差异(页号 + 类别 + 现象)。
7. **发现一处修一处(分层修复路由)**:
- **渲染层**:`DocumentMarkdownRenderer` / sanitize schema / `DocumentImage`(图片宽高、表格、KaTeX、代码高亮、figure/figcaption、TOC 锚点)。
- **摄取层**:图片链接重写、资产存储、元数据(`knowledge/ingestion/extraction.py`、`knowledge/_shared.py`)。
- **管线层**:perceives 引擎选型、分批边界、跨片合并(图片去重、边界图注补救)、图片分辨率与显示尺寸提取(`perceives/ops/pdf.py`)。
7. **发现一处修一处(三杠杆分层修复路由 + 归因)**:每个缺陷先走「双源验证决策树」归因到杠杆/层,再定点改(单轮一个逻辑根因,≤3 文件 ≤2 杠杆):
- **①工程代码·管线层**:perceives 引擎选型、分批边界、跨片合并(图片去重、边界图注补救)、图片分辨率与显示尺寸提取(`pipeline/stages/pdf/*`、`engine_selector.py`、`ops/pdf.py`)。
- **①工程代码·摄取层**:图片链接重写、资产存储、元数据(`knowledge/ingestion/extraction.py`、`knowledge/_shared.py`)。
- **①工程代码·导出层**:wiki 发布资产 bake / 链接重写(`knowledge/lifecycle/wiki_export_service.py`)。
- **①工程代码·渲染层 wiki**:`MarkdownRenderer.tsx` / `ZoomableImage` / `ResponsiveTable` / `CodeBlock` / sanitize schema(图片宽高、表格、KaTeX、代码高亮、TOC 锚点)。
- **①工程代码·渲染层 ui**:`DocumentMarkdownRenderer.tsx` / `DocumentImage` figcaption / `parsePixelValue` / `documentSanitizeSchema`(注意 wiki 与 ui 的 sanitize `style` 放行 / figcaption 行为不对称)。
- **②Skills 本体**:本 Skill 的规则集——发现的跨 doc 结构性 insight 回写此处(如「图注双源铁律」),升级归因路由表。
- **③流程自身**:巡检/还原流程的采样、评分、归因编排(慎改,影响面大)。
- **双源验证决策树(归因前必走,防误归到 perceives)**:Step A 缺陷在候选 Markdown 源码里?是→管线/摄取;否→渲染层或流程伪缺陷。Step B 图片链接形式判摄取/导出。Step C wiki 错还是 ui 错→render_wiki/render_ui;皆对仅旧模拟栈错→流程伪缺陷(不计分)。
- **热更铁律(改 perceives `src/` 后必做,否则改动不生效)**:① 重启 perceives MCP 进程(Python 无热重载);② 清 checkpoint `rm -rf <output_dir>/output/.batch_state/*`(auto_batch resume 按 PDF 内容 SHA-1 缓存切片,不清则复用旧切片、跳过新代码,且完成异常快)。
改后经 `refresh_markdown` 重摄取或重载页面(**已清 checkpoint**),复核该项。
改后经 `refresh_markdown(resume=false)` 重摄取(** checkpoint 全量重跑**)或重载页面,复核该项。
8. **循环**:重复 6–7,直到逐页校验清单全绿;保留关键页源 PDF vs 渲染 Markdown 对比截图为证。

## 逐页校验清单
Expand All @@ -54,17 +59,22 @@ Markdown,并通过浏览器逐页对比将差异修复至完全一致。
- [ ] 代码块语言识别与高亮正确
- [ ] 脚注 / 注释完整

## 关键洞察(R10 沉淀)
## 关键洞察(R10 / 三杠杆改造 沉淀)

- **auto_batch 切片间无共享可变状态**:引擎实例在 pool 复用时产物落盘目录须 per-call 唯一(`tempfile.mkdtemp`);级联/册封类状态(如 `_first_h1_seen`)须显式接收 `slice_index`,否则跨切片泄漏(标题层级错乱 / 公式重现)。
- **1:1 验收必须走到浏览器渲染态**:figure 过度捕获、KaTeX ParseError、公式双份等缺陷在 DB markdown 层不可见,仅浏览器渲染后暴露。
- **figure 图注双源风险**:多数图注已烘入 figure region PNG 像素,故 wiki/ui **不得**再从 `alt` 渲染 `figcaption`(会双图注);caption 语义由 `alt` 承载(无障碍 + 去重指纹),视觉由图内像素承载。
- **三套渲染栈系统性差异**:旧 `_fidelity_render`(Python-Markdown 近似)/ wiki(react-markdown + remark/rehype)/ ui(另一套 react-markdown + sanitize)三栈不同——公式/Mermaid/figure/figcaption/图片尺寸/代码高亮会假阳性/假阴性。对照须用**真实 wiki 渲染栈**(巡检经 `patrol_wiki_env` 起 `next dev` 真页截图,非模拟渲染)。
- **全绿率评分口径**:`score = round(pass_pages/total_pages×100)`(逐页校验清单全绿率),替代主观「100-Σ扣分」——CC 自评与 Judge 复核锁同一份程序化预筛 + defects,根治 ±20 振荡(ISSUE-128)。
- **双源验证防误归因**:渲染层缺陷(候选 MD 正确、渲染器渲染错)会被误归到 perceives;归因前必走「候选 MD 源码层 vs 渲染层」双源决策树(见步骤 7)。
- **inner-loop staging wiki 不 bake/serve 图片(V1 工具链限制,process 层 carve-out)**:`patrol_wiki_env publish-candidate` 仅写 entry Markdown、不烘焙资产;staging dev server(主仓 `negentropy-wiki`,`public/assets/` 无文档资产)对候选 MD 的 `./images/...` 相对引用返回 500/断图,`patrol_page_check` 报 `dom_broken_images=N`(且 Next SPA 对未匹配路由回退 200 HTML,curl 状态码会骗人,须看 content-type/PNG 头)。此为 **staging 工具链 V1 限制,非文档/渲染缺陷**——图资产本身忠实(全分辨率 PNG 落盘 `/.../images/`),生产经 `WikiExportService.export_single_entry(bake=True)` 烘焙到 `public/assets/{doc}/` 后由 ZoomableImage 正常渲染。**inner loop 见全图断 → 记 process carve-out(不扣分、不逐图排查);图片保真改由 (a) 直接核对落盘 PNG 资产尺寸/完整性 或 (b) Real-Render Gate bake 后截图二选一坐实。**

## 反模式(严禁)

- 跳过逐页核对即声明完成;
- 只比文字而忽略图 / 表 / 公式 / 代码 / 注释;
- 图片不还原原始显示尺寸(宽高)。
- 图片不还原原始显示尺寸(宽高);
- 在 inner loop 对「全图断」(staging serving V1 限制)逐图排查或误归到 pipeline/render——context 耗尽根因;先认 staging carve-out,图片保真走资产直查或 Gate。

## 完成判据

Expand Down
35 changes: 35 additions & 0 deletions .agent/skills/science-video-pipeline/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
---
name: science-video-pipeline
description: 把论文/综述做成动效图解科普视频的九阶段流水线(论文精读提取→策划→逐字稿 SSOT→双重校验→分镜→TTS 声音克隆→Remotion 场景实现→草渲抽帧 QA→终渲交付)。Use when producing or iterating an apps/negentropy-influence/episodes/*-video/ episode: narration.md, storyboard.md, IndexTTS voice cloning, Remotion scenes, frame QA, or final render; or when scaffolding a new episode.
allowed-tools: Read, Write, Edit, Glob, Grep, Bash
---

# 科普视频制作流水线(导航壳)

本 Skill 是路由层:内容 SSOT 在 `apps/negentropy-influence/pipeline/skills/01–09.md`,工具 SSOT 在
`apps/negentropy-influence/pipeline/scripts/`,不在此复制任何正文(防第二事实源)。

## 九阶段速查

| Stage | 做什么 | 规格链接 | 工具/命令(编排入口 `pipeline.py`) | 通过门 |
|---|---|---|---|---|
| ① 信源精读取证 | **A 型论文**:并行子代理逐章 + 官方站点补充;**B 型文档/代码/课程站点**:固定提交取证 + 证据三级 | [01](../../../apps/negentropy-influence/pipeline/skills/01-source-extraction.md) | A 型 `paper_extract.py`(map/text/captions/find/render);B 型 `source_ledger.py`(fetch/list/verify/sync/audit——sync/audit 消费系列级 [source-map](../../../apps/negentropy-influence/source-map/claude-code-explained.md)) | 全部断言可回溯;RISKY=0 |
| ② 策划 | 受众/结构/视觉契约(色彩语义) | [02](../../../apps/negentropy-influence/pipeline/skills/02-planning.md) | — | planning.md 六节齐 |
| ③ 逐字稿 | narration.md ★单一事实源 | [03](../../../apps/negentropy-influence/pipeline/skills/03-narration.md) | `pipeline.py build` | `build_narration.py` 通过 |
| ④⑤ 双重校验 + 分镜 | 真实性回溯 + 易懂性;beat 覆盖性 | [04](../../../apps/negentropy-influence/pipeline/skills/04-verification.md) / [05](../../../apps/negentropy-influence/pipeline/skills/05-storyboard.md) | `pipeline.py check`(+`--check-scenes`) | RISKY=0;覆盖率无缺句 |
| ⑥ TTS 配音 | 本人音色克隆(IndexTTS-2.5) | [07](../../../apps/negentropy-influence/pipeline/skills/07-tts-voice.md) | `pipeline.py tts --plan` | refs 指纹门 + 试听 + ETA |
| ⑦ Remotion 场景 | 代码动画实现(动效走 `src/motion/` 运动模型,分镜动效列 `@动词` 标注) | [06](../../../apps/negentropy-influence/pipeline/skills/06-remotion-implementation.md) | `tsc --noEmit` + `node --test scripts/motion.test.ts` | 七条渲染红线 + 运动层铁律 |
| ⑧ 草渲 + 抽帧 QA | 半分辨率快速迭代(`--beat-heads` 入场瞬态补盲;重制回归 `--compare`) | [08](../../../apps/negentropy-influence/pipeline/skills/08-render-qa.md) | `pipeline.py render` + `qa` | 自动体检零 FAIL |
| ⑨ 终渲 + 交付 | 1080p30 + srt/vtt | [09](../../../apps/negentropy-influence/pipeline/skills/09-final-render.md) | `render --final` + `captions` | 实测时长在预算窗 |

## 关键不变量

- 逐字稿只改 `narration.md`;`narration.json`/`manifest.json` 是派生物。
- **口播永不出现他集标题与集数序号**——顺序只在视觉层与 [series.json](../../../apps/negentropy-influence/series.json)(校验:`check_series.py`)。
多系列(顶层 `seriesList[]`)语义:反串线规则**跨系列全局**,顺序类规则**按系列内**判定。
- **证据分级**:B 型信源里「他人对闭源产品源码的分析」属三级证据,口播必须带归属句,
不得表述为产品既成事实;活数据(行数、总量、star 数)不进口播。
- 每集 `pipeline.toml` 是可执行参数的唯一来源;README 不复制命令行参数。
- 时序常数只在 `video/src/timing.json`(timing.ts 与 Python 共读);运动语汇(时长/缓动/弹簧/错峰)只在 `video/src/motion/`(frozen,改 = 模板 + 8 集同步)。
- 声音样本是生物特征:不入库(`voices/refs.toml` 只存指纹),试听后即删。
- 新集脚手架与复用边界(Python 集中 SSOT / Remotion 复制不共享)见 [pipeline/README.md](../../../apps/negentropy-influence/pipeline/README.md)。
22 changes: 22 additions & 0 deletions .github/workflows/negentropy-perceives-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -201,6 +201,20 @@ jobs:
# PYSEC-2025-211..218 同约束),待交集支持 5.3.0+ 后升级
--ignore-vuln CVE-2026-4372

# transformers PYSEC-2026-2290(CVE-2026-5241):LightGlue 模型加载路径 RCE——
# 恶意 config.json 覆盖 trust_remote_code=False 触发远程代码执行。与上方 CVE-2026-4372
# 同威胁模型:本项目仅加载第一方模型 artifact、不加载不可信 HF 仓库/config,攻击向量
# 不可达;且 upstream 无已发布修复版本(Last affected 5.2.0,fix 仅在未发布 commit),
# transformers 锁定 <5.0.0 亦受 marker-pdf / surya 兼容交集制约
--ignore-vuln PYSEC-2026-2290

# transformers CVE-2026-9856(GHSA-xrqw-3rrv-vx5w):save_pretrained 路径穿越
# 任意写文件——需加载/保存恶意 HF 仓库模型触发。与上方 CVE-2026-4372 同威胁模型:
# 本项目仅加载第一方模型 artifact、不加载不可信 HF 仓库,攻击向量不可达;
# 修复版本 5.10.0,而 transformers 锁定 <5.0.0 受 marker-pdf / surya 兼容交集
# 制约(与上方 PYSEC-2025-211..218 同约束),待上游适配后升级
--ignore-vuln CVE-2026-9856

# torch 2.10.0 本地内存破坏 / DoS,需攻击者构造恶意 tensor / pt2 文件;
# 本项目仅加载第一方模型 artifact,无不可信输入路径,upstream 暂无 fix
--ignore-vuln PYSEC-2025-189
Expand All @@ -217,6 +231,14 @@ jobs:

# torch 2.10.0 CVE-2025-3000:本地内存破坏 / DoS,同上(需构造恶意 tensor;本项目仅加载第一方模型 artifact,upstream 暂无 fix)
--ignore-vuln CVE-2025-3000

# setuptools PYSEC-2026-3447(CVE-2026-59890,CVSS 6.1):MANIFEST.in 排除规则在
# macOS APFS/HFS+ 上因缺 Unicode(NFD/NFC)归一化被绕过,构建 sdist 时可能误打包应
# 排除文件(本地向量、需在受影响 macOS 文件系统上构建 sdist)。本项目 CI 在 Linux
# 构建(非 APFS/HFS+)、产物不含敏感文件,攻击向量不可达;修复仅在 setuptools 83.0.0,
# 为保持既有 82.0.1 运行时 pin(见 pyproject,undetected-chromedriver 相关)不变、
# 不为不可达低危 flaw 变更 build 后端版本,故此处 ignore 而不升级
--ignore-vuln PYSEC-2026-3447
)
uv run pip-audit "${ignore_args[@]}"

Expand Down
43 changes: 43 additions & 0 deletions .github/workflows/twin-files-consistency.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
name: Twin Files Consistency

# 孪生文件(逐字节副本)一致性校验 —— 横切关注点,正交于各 app CI。
#
# 某些模块因构建边界无法提为共享包,只能以逐字节副本形式在多处持有。
# 副本的固有风险是单边漂移:改了一处忘了另一处,缺陷从此静默分叉。
# 本 job 校验登记表内每组副本精确字节相等,漂移时打印统一 diff 指明同步方向。
#
# 登记表与判据详见 scripts/check_twin_files.py。pre-commit 侧有同名钩子做本地前置拦截;
# CI 侧是兜底 —— 未装 hooks 或 --no-verify 绕过的提交仍会在此被拦下。
#
# fail-only:检测到漂移即阻塞合并,不自动同步(哪份权威取决于改动意图,机器不该代猜)。

on:
pull_request:
paths:
- "scripts/check_twin_files.py"
- "apps/negentropy-wiki/src/components/markdown/remark-math-sanitize.ts"
- "apps/negentropy-ui/utils/remark-math-sanitize.ts"
- ".github/workflows/twin-files-consistency.yml"
push:
branches: [master, main]
paths:
- "scripts/check_twin_files.py"
- "apps/negentropy-wiki/src/components/markdown/remark-math-sanitize.ts"
- "apps/negentropy-ui/utils/remark-math-sanitize.ts"

permissions:
contents: read

jobs:
twin-files-consistency:
name: Twin Files Check
runs-on: ubuntu-latest
timeout-minutes: 3
steps:
- uses: actions/checkout@v4

- name: Set up uv
uses: astral-sh/setup-uv@v6

- name: Check twin files are byte-identical
run: uv run --no-project scripts/check_twin_files.py
31 changes: 31 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -293,3 +293,34 @@ benchmarks/runs/
# PDF Fidelity Patrol 临时候选产物(评估用重转 Markdown,正常落 worktree 外暂存目录;
# 此条兜底 agent 路径漂移误在 worktree 写候选的极端场景,确保其永不进 commit/PR)
patrol-candidate.md

# 科普视频工程(apps/negentropy-influence/episodes/<slug>-video)本地产物:
# tts.py 逐句音频 + manifest、Remotion 渲染产物均环境相关,不入 git。
# 注:工程内的 .gitignore 被上方根级裸 `.gitignore` 规则挡住无法提交,规则须维护在此处。
# 通配到集:`*` 只吃一级目录名(= 分集目录),故**新增分集无需再改本文件**
# —— 此前逐集枚举导致新集的音频产物在补齐 5 行前完全未被覆盖。
# `out/` 已由上方通用规则(第 223 行 `out/`,非锚定)覆盖,此处不再逐集重复。
apps/negentropy-influence/episodes/*/video/public/audio/
apps/negentropy-influence/episodes/**/*.mp4
apps/negentropy-influence/episodes/**/*.mp3
apps/negentropy-influence/episodes/**/*.wav

# 声音克隆参考样本(apps/negentropy-influence/pipeline/voices/):个人声音属生物
# 特征信息,绝不入库。目录级忽略 + 白名单例外(README 与 refs.toml 指纹清单——
# 后者只存哈希与生成参数,不含音频字节),防漏网音频格式(ogg/opus/wma 等)。
# 注:必须写 `/*` 而非 `/` —— git 无法用 `!` 把被排除**目录**内的文件重新纳入。
apps/negentropy-influence/pipeline/voices/*
!apps/negentropy-influence/pipeline/voices/README.md
!apps/negentropy-influence/pipeline/voices/refs.toml

# negentropy-influence 的 uv 锁文件:该子项目**刻意不是可构建的 Python 包**
# (pyproject.toml 无 `[project]` 表,全部脚本走 `uv run --no-project` + 调用点
# `--with` 注入依赖),故它不该有锁文件。但漏打 `--no-project` 时 uv 会当场把本
# 目录当项目根,生成 `uv.lock` 与 `.venv/`——后者已由上方通用 `.venv` 规则覆盖,
# 前者没有,于是留下一个**可提交**的产物,一旦入库就与「不参与任何 uv workspace」
# 的声明直接矛盾。
# ⚠️ 必须逐路径锚定:兄弟子项目(negentropy / negentropy-perceives / cognizes)
# 的 uv.lock 是**受版本控制的依赖 SSOT**,裸 `uv.lock` 规则会把它们一起吞掉。
# 执法(双向:本条命中 + 兄弟三份不被误伤)见
# apps/negentropy-influence/pipeline/tests/test_subproject_hygiene.py。
apps/negentropy-influence/uv.lock
Loading
Loading