Virtual Embryo Challenge更新于 10-03 18:47(北京时间) / 每 5 分钟更新

总览 · ← 返回运行 20261003-070222-search-t2-heart-extrap-g24-D

节点 n16 在终选来历上

实现T2HX-05逐主轴幅度趋势外推:两输入阶段PCA谱比值r_j对末阶段坐标做阻尼逐轴缩放(只改轴比);proxy双向证伪,按停止规则提交γ=0,输出=父节点13,机制留VEC_GAMMA开关。

运行?一次完整的自动搜索或 Agent 会话,有自己的锁定配置和证据包。20261003-070222-search-t2-heart-extrap-g24-D
父节点n13
子节点n19
操作?种子:人写的起点;改进:在父节点上改;草稿:从头写;修复:修父节点的报错。改进
状态已打分
分数搜索目标分 54.15(+0.0) · proxy 54.15(+0.0)
审查未审查
用时?从运行开始到结束(或到现在)的挂钟时间。17 分
程序版本cbb8919b2a17a09509ef52f8db9ee00874701cab (programs.git)

方法说明?节点程序自带的 METHOD.md:这个程序做了什么、为什么。

来自 programs.git cbb8919b2a:solution/METHOD.md

实现T2HX-05逐主轴幅度趋势外推:两输入阶段PCA谱比值r_j对末阶段坐标做阻尼逐轴缩放(只改轴比);proxy双向证伪,按停止规则提交γ=0,输出=父节点13,机制留VEC_GAMMA开关。

榜 / 视图

T2:heart:val_extrap,proxy = E8.25_late + E8.75 → E9.5(步长比 1.5)。纯 CPU,约 2.2 s,峰值内存 <1 GB(EXECUTION.json: gpu=false)。查分用量 4/20。

实际实现的方法族(PLAN T2HX-05)

逐主轴幅度趋势外推(各向异性形状),按 PLAN 原文实现:

  1. 表达与细胞照抄末阶段(分层抽样到 max_cells 内;本视图 last.n=24826 ≤ 25179,全量输出)。父节点的基因级趋势外推(T2HX-03)保留在 VEC_ALPHA 开关后,提交值 α=0(该族已有 6 组证伪)。
  2. 新机制:对 prev 与 last 各自做同一确定性 PCA(协方差特征分解、特征值降序),取逐轴标准差 σ_prev[j]、σ_last[j](谱按秩配对——旋转不变量;两阶段特征帧实际发生轴置换,见下);计算 r_j=σ_last[j]/σ_prev[j],对 last 的规范化坐标按轴乘 s_j=1+γ·(r_j−1),再做原各向同性缩放到 0.946×max_k RMS(input_k)。只改轴间比例(形状),不动表达;线性映射不动共线邻域结构;各向同性分量被后续 RMS 归一吸收。
  3. 单输入退路:prev 不存在 → γ 强制 0(本节点顺带修复了父节点单输入时 float(None) 崩溃的 bug,dt_ratio 允许为 null)。
  4. 开关:VEC_MECH_OFF=1 或 VEC_GAMMA=<g>(仅扫参);提交默认 GAMMA=0.0。
  5. 视图无关:不读 board/路径/绝对时间,只用两输入坐标的协方差谱;在伪装视图(时间 +1 天、改路径名、乱序 manifest 键)上复跑,X 与坐标逐值相同。

机制生效的证据(γ=1.0 实测,proxy seed 0)

  • 实际改变了哪些细胞:全部 24826 个输出细胞的坐标都被逐轴缩放(表达矩阵逐字节不变);s_j=[0.558, 0.610, 0.751](γ=1 即 r_j),输出轴比从 [1, 0.938, 0.796] 变为 [1, 0.957, 0.933](趋近球形),RMS 仍钉在 335.0。
  • 离线诊断(PLAN 要求先看):σ_prev=[245.3, 210.4, 144.9]、σ_last=[136.8, 128.3, 108.9]、r_j=[0.558, 0.610, 0.751],无极端值(PLAN 风险界 0.5–2 之内)。轴比趋势:prev [1, 0.86, 0.59] → last [1, 0.94, 0.80](点云在变得更各向同性),γ=1 即沿该谱趋势再走一步。两阶段特征帧确实置换(prev 轴0 与 last 轴2 |cos|=0.91,对角 |cos| 仅 0.42/0.28/0.13),故配对用秩排序谱(旋转不变)而非物理方向——γ=1 的操作等价于对特征值谱做一步对数外推,不受置换影响。
  • 四组分各自的变化(γ=0 对照 → γ=1.0):expression_change 50.00 → 50.00(不变,表达未动);cell_state 50.00 → 50.00(不变);local_spatial 50.00 → 50.02(线性映射,邻域基本不动,符合预期);shape_scale 66.60 → 54.37(d2_shape 0.0489 → 0.0570,occupancy_dice 0.815 → 0.761)。榜分 54.15 → 51.10。

机制对照结果(PLAN mechanism_off_control)

配置榜分shape_scaled2_shapelocal_spatial表达三组
γ=0(VEC_MECH_OFF=1,= 父节点 12/13,md5 一致)54.1566.600.048950.0050.00×3
γ=0.552.7160.840.054650.0150.00×3
γ=1.0(一步谱趋势)51.1054.370.057050.0250.00×3
γ=−0.5(放大各向异性,仅诊断)54.1866.750.043649.9750.00×3
γ=0(提交默认,单独查分确认)54.1566.600.048950.0050.00×3

与 PLAN 预期一致:关闭机制后输出逐字节回到父节点(md5 9d788ba7…,与父节点重跑一致),表达三组恒为 50.00,只有 shape_scale / local_spatial 可能动。打开时方向为负且单调(γ↑ → d2_shape↑ → shape_scale↓),触发 PLAN 停止规则「shape_scale<66.0 即停、交 γ=0」。

结论与教训

  • 谱趋势方向(趋向各向同性)被 proxy 证伪:目标 E9.5 的形状谱更接近 last(E8.75)自身,γ=1 把点云推向近球形使 d2_shape 恶化 17%。与 node6(固定各向异性混合,净负)先验一致(PLAN 风险 c 命中)——「把形状向各向同性改」这个族在本榜两次独立证伪。
  • γ=−0.5(沿趋势反方向、放大各向异性)shape_scale 66.75(+0.15)、榜分 +0.03,均 <1 分噪声界(PLAN 风险 d),不算进步;且负 γ 是「沿 prev 形状方向外推」,与 node13 教训同理属利用 proxy 趋势伪影的打分器特化方向,明确不提交。
  • 至此坐标形状侧已有 4 组证据:各向同性缩放 0.946×maxRMS 是局部最优(66.60),kNN 残差形变(node9/15)、各向异性固定混合(node6)、逐主轴谱趋势外推(本节点)全部 ≤ 该值。shape_scale 组对「只动全局线性几何」的改动已饱和。

验证过 / 没验证

  • 验证过:proxy seed0 四档 γ 查分;γ=0 输出与父节点 md5 一致并单独查分确认 54.15;vec-check 通过;同 seed 复跑逐字节确定(seed 0/1);单输入视图退路不崩(本地构造单输入视图跑通 + vec-check);伪装视图(时间平移 +1、改路径、乱序 manifest)输出逐值相同;运行时 ~2.2 s、内存 <1 GB。
  • 没验证:γ 在 (0, 0.5) 与 (−0.5, 0) 的细网格(两端单调、族已证伪,浪费额度);final 真实括号(E8.75+E9.5→E10.5)上的 r_j 谱——但该机制提交值 γ=0,真实视图输出即父节点行为(末阶段坐标 PCA 规范化 + 0.946×maxRMS),父节点已在 final 验证过合规。

知识来源

无外部生物知识;只用了输入视图内两个已发布阶段坐标的协方差谱(现场计算)与线性代数(特征值谱为旋转不变量)。未使用任何保留阶段/保留基因型信息。

下一步建议

  • 全局线性几何(缩放、各向异性、谱外推)已 4 组饱和于 66.6;形状侧若还想动,只剩非线性的、由表达数据(而非坐标趋势)驱动的空间重排,例如按细胞类型组成的占据格变化——但 node9/15 的 kNN 形变已两次为负,先验不利。
  • 表达三组钉在 50.00 地板;树内趋势族全灭。若要突破需要与 prev→last 差正交的信号(prior/ 调控网络约束的方向、或 external/ 的 Qiu E8.75 心脏细胞作参考锚定跨样本技术差),每个方向先 1 次查分看 de_direction 符号再投入。

调研员的计划

名称T2HX-05 逐主轴幅度趋势外推(各向异性形状)@node13
动机父节点 13/12 的 cell_state、expression_change、local_spatial 三组均钉在 50.00(copy_last 地板),且『沿观测趋势外推表达』整族已有 5 组独立证伪(node4、node10、node13、方法卡 damped_shift、官方 pseudobulk_shift),ANALYSIS 明确不要再碰表达侧趋势族。唯一非地板、仍有上探空间的是 shape_scale=66.60,ANALYSIS 指出它被 d2_shape=0.0489 卡住,『只靠全局缩放无法再涨,需改变点云形状本身』。node6 曾试各向异性固定混合(w=0.35/0.7,净负),但那是把形状向各向同性收缩的固定权重,不是沿观测趋势外推;node9 的 kNN 残差形变改变的是局部相对几何且 proxy 上为负(54.15→53.92)。本方案改做各主轴幅度的趋势外推,是未测过的形状变体。
做法1) 保留父节点全部:表达照抄末阶段、确定性 PCA 规范化、各向同性缩放到 0.946×max_k RMS。2) 新增机制(在最终各向同性缩放之前):对 prev 与 last 各自跑同一 pca_canonicalise,得各主轴标准差 σ_prev[j]、σ_last[j](sqrt 特征值);计算逐轴比值 r_j=σ_last[j]/σ_prev[j];对 last 的规范化坐标按轴乘 s_j=1+γ·(r_j−1),再做原各向同性缩放。这样只改变轴间比例(形状),γ 是趋势阻尼。3) γ 初值与搜索:先查 γ=1.0(一步趋势)与 γ=0.5 两个探针;若 shape_scale<66.0 立即停止并交 γ=0。范围上界 γ≤1(不外推超过一个观测步长,防发散)。4) 单输入退路:prev 不存在时无 σ_prev,γ 强制 0,输出=父节点。5) vec-score 快筛:每次只跑 proxy seed0,比较 shape_scale 与 d2_shape;用『首查 γ=1.0 若 shape_scale<66.0 即停』的停止规则控预算(照抄 node13 的纪律)。6) 视图无关:不读 board/时间,只用两输入阶段的协方差特征值,时间平移不变。
风险a) 逐轴比值可能主要反映 prev/last 的样本技术差异而非生物形状趋势(与表达侧全局水平差同理)——Engineer 先看离线诊断:打印 r_j 各分量,若全部≈1(形状几乎没变)则机制无量可外推,直接交 γ=0 不耗查分;若某轴 r_j 极端(>2 或<0.5)提示技术噪声,降 γ 或放弃。b) PCA 主轴在两阶段间可能交换次序/方向,导致逐轴比值错配——用特征值降序配对并在日志打印轴对应;若错配严重则该机制不可靠。c) 与 node6 各向异性净负的先验冲突——若 γ=0.5 与 γ=1.0 均 ≤66.0,即视为与 node6 一致被证伪,交 γ=0。d) 查分噪声约 1 分,<1 分的变化不算进步,需看 d2_shape 方向确认。

代码改动?这个节点的程序和父节点程序的逐行差别:绿色是新增,红色是删除。

对比:父节点版本 35d31a123f。改动的文件:solution/METHOD.md +32 −41、solution/run.py +108 −44

diff --git a/solution/METHOD.md b/solution/METHOD.mdindex fa1893c..5b87e7c 100644--- a/solution/METHOD.md+++ b/solution/METHOD.md@@ -1,62 +1,53 @@-实现T2HX-03基因级趋势外推,proxy证伪(α=0.2→52.05、de_direction−0.06,与幅度无关),按停止规则提交α=0;坐标机制保留,输出=父节点12(54.15)。+实现T2HX-05逐主轴幅度趋势外推:两输入阶段PCA谱比值r_j对末阶段坐标做阻尼逐轴缩放(只改轴比);proxy双向证伪,按停止规则提交γ=0,输出=父节点13,机制留VEC_GAMMA开关。  ## 榜 / 视图 -`T2:heart:val_extrap`,proxy = E8.25_late + E8.75 → E9.5(步长比 1.5)。纯 CPU,约 2 s,峰值内存 <1 GB(`EXECUTION.json`: `gpu=false`)。+`T2:heart:val_extrap`,proxy = E8.25_late + E8.75 → E9.5(步长比 1.5)。纯 CPU,约 2.2 s,峰值内存 <1 GB(`EXECUTION.json`: `gpu=false`)。查分用量 4/20。 -## 实际实现的方法族(PLAN T2HX-03)+## 实际实现的方法族(PLAN T2HX-05) -**阻尼基因级表达趋势外推**,按 PLAN 原文实现:+**逐主轴幅度趋势外推(各向异性形状)**,按 PLAN 原文实现: -1. 加载 prev(E8.25_late,58716 细胞)与 last(E8.75,24826 细胞)两个输入阶段,对每个基因 g 计算伪批量差 `delta_g = mean(X_last[:,g]) − mean(X_prev[:,g])`(面板序,500 基因)。-2. 对末阶段每个输出细胞:`X_pred[cell,g] = clip(X_last[cell,g] + α·delta_g, 0, ∞)`。每个基因有独立的、数据驱动的位移;无变化的基因不动(本视图上 500/500 基因 |delta|>0)。这不是常数位移(每基因不同标量),也不是组成重加权(细胞集合与比例不动)。-3. 坐标管线与父节点完全一致:确定性 PCA 规范帧(去质心 → eigh 降序 → det=+1 → 第三矩定向)+ 各向同性缩放到 `0.946 × max_k RMS(input_k)`(proxy: rms_inputs=[354.13, 216.88] → rms_out=335.00)。-4. 单输入退路:prev 不存在时无 delta,α 强制为 0,表达照抄、坐标同管线,不崩。-5. 开关:`VEC_MECH_OFF=1` 或 `VEC_ALPHA=<a>`(仅扫参用);提交默认 `ALPHA=0.0`。+1. 表达与细胞照抄末阶段(分层抽样到 max_cells 内;本视图 last.n=24826 ≤ 25179,全量输出)。父节点的基因级趋势外推(T2HX-03)保留在 `VEC_ALPHA` 开关后,提交值 α=0(该族已有 6 组证伪)。+2. **新机制**:对 prev 与 last 各自做同一确定性 PCA(协方差特征分解、特征值降序),取逐轴标准差 σ_prev[j]、σ_last[j](谱按秩配对——旋转不变量;两阶段特征帧实际发生轴置换,见下);计算 r_j=σ_last[j]/σ_prev[j],对 last 的规范化坐标按轴乘 s_j=1+γ·(r_j−1),再做原各向同性缩放到 0.946×max_k RMS(input_k)。只改轴间比例(形状),不动表达;线性映射不动共线邻域结构;各向同性分量被后续 RMS 归一吸收。+3. 单输入退路:prev 不存在 → γ 强制 0(本节点顺带修复了父节点单输入时 `float(None)` 崩溃的 bug,dt_ratio 允许为 null)。+4. 开关:`VEC_MECH_OFF=1` 或 `VEC_GAMMA=<g>`(仅扫参);提交默认 `GAMMA=0.0`。+5. 视图无关:不读 board/路径/绝对时间,只用两输入坐标的协方差谱;在伪装视图(时间 +1 天、改路径名、乱序 manifest 键)上复跑,X 与坐标逐值相同。 -## 机制生效的证据(α=0.2 实测,proxy seed 0)+## 机制生效的证据(γ=1.0 实测,proxy seed 0) -- **实际改变了哪些细胞**:全部 24826 个输出细胞都被移动(统一加 α·delta 向量);500/500 基因有非零位移,|delta| 中位数 0.112、P90 0.705、max 2.088(不是只有少数基因被移动);表达矩阵 L2 变化 190.6(非零);8.1M 个条目被下界 clip(零表达条目对负 delta 基因不动、对正 delta 基因变非零)。-- **四组分各自的变化**(α=0 对照 → α=0.2):expression_change 50.00 → **47.88**;cell_state 50.00 → **44.98**;local_spatial 50.00 → **49.46**;shape_scale 66.60 → **65.88**。榜分 54.15 → **52.05**。de_direction 0 → −0.0596,de_score 0 → −0.1111,mmd_u 0.0586 → 0.0605,variogram 0.0586 → 0.0849。+- **实际改变了哪些细胞**:全部 24826 个输出细胞的坐标都被逐轴缩放(表达矩阵逐字节不变);s_j=[0.558, 0.610, 0.751](γ=1 即 r_j),输出轴比从 [1, 0.938, 0.796] 变为 [1, 0.957, 0.933](趋近球形),RMS 仍钉在 335.0。+- **离线诊断(PLAN 要求先看)**:σ_prev=[245.3, 210.4, 144.9]、σ_last=[136.8, 128.3, 108.9]、r_j=[0.558, 0.610, 0.751],无极端值(PLAN 风险界 0.5–2 之内)。轴比趋势:prev [1, 0.86, 0.59] → last [1, 0.94, 0.80](点云在变得更各向同性),γ=1 即沿该谱趋势再走一步。两阶段特征帧确实置换(prev 轴0 与 last 轴2 |cos|=0.91,对角 |cos| 仅 0.42/0.28/0.13),故配对用秩排序谱(旋转不变)而非物理方向——γ=1 的操作等价于对特征值谱做一步对数外推,不受置换影响。+- **四组分各自的变化**(γ=0 对照 → γ=1.0):expression_change 50.00 → 50.00(不变,表达未动);cell_state 50.00 → 50.00(不变);local_spatial 50.00 → 50.02(线性映射,邻域基本不动,符合预期);shape_scale 66.60 → **54.37**(d2_shape 0.0489 → 0.0570,occupancy_dice 0.815 → 0.761)。榜分 54.15 → 51.10。  ## 机制对照结果(PLAN `mechanism_off_control`) -| 配置 | 榜分 | expr_change | cell_state | local_spatial | shape_scale |-|---|---:|---:|---:|---:|---:|-| α=0(`VEC_MECH_OFF=1`,= 父节点 12) | **54.15** | 50.00 | 50.00 | 50.00 | 66.60 |-| α=0.05 | 53.02 | 47.88 | 47.86 | 49.90 | 66.46 |-| α=0.2 | 52.05 | 47.88 | 44.98 | 49.46 | 65.88 |+| 配置 | 榜分 | shape_scale | d2_shape | local_spatial | 表达三组 |+|---|---:|---:|---:|---:|---|+| γ=0(`VEC_MECH_OFF=1`,= 父节点 12/13,md5 一致) | **54.15** | 66.60 | 0.0489 | 50.00 | 50.00×3 |+| γ=0.5 | 52.71 | 60.84 | 0.0546 | 50.01 | 50.00×3 |+| γ=1.0(一步谱趋势) | 51.10 | 54.37 | 0.0570 | 50.02 | 50.00×3 |+| γ=−0.5(放大各向异性,仅诊断) | 54.18 | 66.75 | 0.0436 | 49.97 | 50.00×3 |+| γ=0(提交默认,单独查分确认) | 54.15 | 66.60 | 0.0489 | 50.00 | 50.00×3 | -对照与 PLAN 预期一致(关闭后回到 54.15 / 50.00×3 / 66.60),即表达外推机制确实生效并改变了输出;但打开时**方向为负**,且 α 越小越接近 50(单调),α=0 是族内最优边界。+与 PLAN 预期一致:关闭机制后输出逐字节回到父节点(md5 9d788ba7…,与父节点重跑一致),表达三组恒为 50.00,只有 shape_scale / local_spatial 可能动。打开时方向为负且单调(γ↑ → d2_shape↑ → shape_scale↓),触发 PLAN 停止规则「shape_scale<66.0 即停、交 γ=0」。 -## 为什么提交 α=0(如实报告:机制被证伪)+## 结论与教训 -- PLAN 停止规则:「第一次查 α=0.2 时若 expression_change<50 立即终止」。实测 47.88 < 50,且 cell_state 44.98 同时 <50(PLAN 第 6 条的终止条件「两组均 ≤50」满足),故不扫 [0.1, 0.3, 0.5, 1.0],只补了一个边界探针 α=0.05 确认单调性。-- de_score / de_direction 在 α=0.05 与 α=0.2 完全相同(−0.1111 / −0.0596):DE 方向指标与幅度无关,说明 **prev→last 的基因级趋势方向本身与保留目标 E9.5 的真实变化方向不一致**(负相关),缩小 α 只能稀释损失、不能翻正。-- 与树内及方法卡证据一致:节点 4(分型伪批量 α=0.05)cell_state 49.04,节点 10(α=0.02)49.40,方法卡 damped_shift 分型网格 α∈[0.1,1.0] 全部 49.47→48.77 < 50,官方 pseudobulk_shift 基线 48.77。本次把证伪扩展到**全局逐基因 delta**(不分型、不做匹配)这一未测变体。-- 结构分析(离线,未耗查分):全局 delta 的均值 −0.124(E8.75 整体表达水平比 E8.25_late 低约 20%),疑似跨样本技术差异(覆盖/深度)而非生物学趋势;组成控制后的分型 delta 均值 −0.004、幅度小 30 倍(|δ| 中位数 0.0035),与全局 delta 相关 0.71;去掉全局水平项的校正 delta 与原始 delta cos=0.87——失败的主要分量(80% 符号一致)在这两个「结构修复」变体中仍然保留,且分型版本已被方法卡网格直接证伪,故未再消耗查分探针。-- 提交 α=0.2 会把节点打到 52.05(低于父 54.15)并向树传播一个在 proxy 上有害的机制;按方法卡先例(「外推网格单调低于地板,取边界 α=0」)与节点 12 的处理方式,提交族边界 α=0,机制代码保留在 `VEC_ALPHA` 开关后供后续节点复用。+- 谱趋势方向(趋向各向同性)被 proxy 证伪:目标 E9.5 的形状谱更接近 last(E8.75)自身,γ=1 把点云推向近球形使 d2_shape 恶化 17%。与 node6(固定各向异性混合,净负)先验一致(PLAN 风险 c 命中)——「把形状向各向同性改」这个族在本榜两次独立证伪。+- γ=−0.5(沿趋势反方向、放大各向异性)shape_scale 66.75(+0.15)、榜分 +0.03,均 <1 分噪声界(PLAN 风险 d),不算进步;且负 γ 是「沿 prev 形状方向外推」,与 node13 教训同理属利用 proxy 趋势伪影的打分器特化方向,明确不提交。+- 至此坐标形状侧已有 4 组证据:各向同性缩放 0.946×maxRMS 是局部最优(66.60),kNN 残差形变(node9/15)、各向异性固定混合(node6)、逐主轴谱趋势外推(本节点)全部 ≤ 该值。shape_scale 组对「只动全局线性几何」的改动已饱和。 -## 验证过的+## 验证过 / 没验证 -- **确定性**:同 seed 重跑 `.X`(data/indices/indptr)与 `obsm/spatial_3D` 逐元素相同;seed 0 与 seed 1 的 `.X`/`obsm`/`obs`/`var` 完全相同(n=24826 ≤ max_cells=25179,无抽样,rng 未被消费;仅 `uns/generator_seed` 记录不同,与父节点行为一致)。-- **与父节点等价**:提交默认(α=0)的输出与 `VEC_MECH_OFF=1` 对照、与父节点 12 的预测逐字节一致;正式分预期 = 父节点(54.15 A 半,rank3 ≈ 54.00)。-- **视图无关**:输出只取决于视图数据与 seed;不读 `board`/`mode`/`source`/`dataset`,无绝对发育时间分支(`extrap_step` 的步长比仅写日志;时间统一平移后 prev/last 选择与 delta 不变)。-- **格式**:`vec-check --data <proxy view>` → `{"status":"ok","errors":[]}`(α=0、α=0.05、α=0.2 三个产物都通过)。--## 没验证 / 风险--- α>0 在**真实括号**(E8.75+E9.5→E10.5,同一官方数据集、delta 更干净)上的方向未验证也无法验证(目标保留);proxy 的失败可能部分源于 E8.25_late 与 E8.75 两样本间的技术水平差。但按「分数要能迁移」与护栏规则,不能提交一个在唯一尺子上为负的机制赌真实视图翻正。-- 负 α(逆时间外推)在 proxy 上会得分更高,但那是利用两输入样本的技术水平差、对真实任务无迁移性的打分器特化,明确不做。-- 表达侧四组中 cell_state / expression_change / local_spatial 仍钉在 50.00(copy_last 地板),shape_scale 仍被 d2_shape=0.04891 钉在 66.60。本节点没有打开新缺口,贡献是把「基因级趋势外推」整族(全局 delta 变体)在 proxy 上证伪并留下可复用的开关实现。+- 验证过:proxy seed0 四档 γ 查分;γ=0 输出与父节点 md5 一致并单独查分确认 54.15;`vec-check` 通过;同 seed 复跑逐字节确定(seed 0/1);单输入视图退路不崩(本地构造单输入视图跑通 + vec-check);伪装视图(时间平移 +1、改路径、乱序 manifest)输出逐值相同;运行时 ~2.2 s、内存 <1 GB。+- 没验证:γ 在 (0, 0.5) 与 (−0.5, 0) 的细网格(两端单调、族已证伪,浪费额度);final 真实括号(E8.75+E9.5→E10.5)上的 r_j 谱——但该机制提交值 γ=0,真实视图输出即父节点行为(末阶段坐标 PCA 规范化 + 0.946×maxRMS),父节点已在 final 验证过合规。  ## 知识来源 -只用通用机制知识:线性趋势外推(数值方法);胚胎随发育时间增大、样本观测 RMS 只能低估真实尺寸(坐标机制沿用父节点,测量学常识)。未使用任何保留阶段(E8.5/E10.5/E12.5、禁窗 (8.25,8.75) 与 9.5<E≤13.5)或保留基因型的数据、比例、标记基因或形态信息;`external/`(Qiu E8.75)与 `prior/` 均未被 `run.py` 读取。+无外部生物知识;只用了输入视图内两个已发布阶段坐标的协方差谱(现场计算)与线性代数(特征值谱为旋转不变量)。未使用任何保留阶段/保留基因型信息。 -## 查分记录(共 4 次 / 上限 20)+## 下一步建议 -1. `t2hx03_a0.2` → 52.05(方向为负,触发 PLAN 停止规则)-2. `t2hx03_control_a0` → 54.15(机制关闭对照 = 父节点)-3. `t2hx03_a0.05` → 53.02(边界探针,确认单调)-4. `t2hx03_committed_a0` → 54.15(提交产物确认)+- 全局线性几何(缩放、各向异性、谱外推)已 4 组饱和于 66.6;形状侧若还想动,只剩非线性的、由表达数据(而非坐标趋势)驱动的空间重排,例如按细胞类型组成的占据格变化——但 node9/15 的 kNN 形变已两次为负,先验不利。+- 表达三组钉在 50.00 地板;树内趋势族全灭。若要突破需要与 prev→last 差正交的信号(prior/ 调控网络约束的方向、或 external/ 的 Qiu E8.75 心脏细胞作参考锚定跨样本技术差),每个方向先 1 次查分看 de_direction 符号再投入。diff --git a/solution/run.py b/solution/run.pyindex b81d07d..afcafb3 100644--- a/solution/run.py+++ b/solution/run.py@@ -1,44 +1,66 @@ #!/usr/bin/env python3-"""T2 extrapolation: copy-last expression (trend mechanism falsified, alpha=0) + PCA-normalised rescaled coordinates.--Mechanism (PLAN family T2HX-03), implemented in full and committed with-alpha = 0 because the proxy falsified every alpha > 0.  Three parts:--1. Expression trend extrapolation (new, this node): with two or more input-   stages, compute the per-gene pseudobulk delta between the last two inputs,-   ``delta_g = mean(X_last[:, g]) - mean(X_prev[:, g])``, and displace every-   output cell of the last stage by ``alpha * delta_g`` (clipped at 0).  Each-   gene gets its own data-driven displacement; genes that did not change are-   not moved.  With a single input stage there is no delta and alpha is-   forced to 0 (expression copied verbatim).+"""T2 extrapolation: copy-last expression + PCA-normalised anisotropic-trend rescaled coordinates.++Three parts:++1. Expression baseline: the last observed stage's cells are copied verbatim+   (values and sparsity structure), stratified-sampled to max_cells when+   needed.  (The per-gene trend extrapolation of family T2HX-03 is retained+   behind VEC_ALPHA for provenance but committed at ALPHA = 0: the proxy+   falsified every alpha > 0 -- alpha = 0.2 -> 52.05, alpha = 0.05 -> 53.02,+   alpha = 0 -> 54.15, with de_direction -0.0596 independent of magnitude.)++2. NEW (this node, PLAN family T2HX-05) per-axis amplitude trend+   extrapolation: run the same deterministic PCA canonicalisation on the+   previous and last input stages, giving per-axis standard deviations+   sigma_prev[j], sigma_last[j] (sqrt eigenvalues, rank-ordered -- a+   rotation-invariant spectrum pairing).  Before the final isotropic+   rescale, multiply the last stage's canonical coordinates per axis by+   ``s_j = 1 + gamma * (r_j - 1)`` with ``r_j = sigma_last[j] /+   sigma_prev[j]``.  gamma = 1 is exactly one multiplicative step of the+   observed spectrum trend (log sigma extrapolation); gamma damps it.  This+   changes only the axis ratios (cloud shape), not the expression, not the+   relative within-cloud neighbourhood geometry (the map is linear), and not+   the final RMS radius (the isotropic rescale to the target RMS happens+   afterwards).  Single input stage -> no sigma_prev, gamma forced to 0+   (output equals the parent node).++   Proxy diagnostics (E8.25_late -> E8.75): sigma_prev = [245.3, 210.4,+   144.9], sigma_last = [136.8, 128.3, 108.9], r = [0.558, 0.610, 0.751]+   (none extreme per the PLAN risk bounds 0.5-2).  Axis-ratio trend: prev+   [1, 0.86, 0.59] -> last [1, 0.94, 0.80] (cloud becoming more isotropic);+   gamma = 1 projects the last cloud onto a near-spherical spectrum.  Note+   the eigenframes of the two stages are permuted (|cos| between axis 0 of+   prev and axis 2 of last = 0.91), which is why the pairing is done on the+   rank-ordered spectra (invariant) rather than on physical directions.     Proxy verdict (T2:heart:val_extrap, E8.25_late + E8.75 -> E9.5):-   alpha = 0.2 -> board 52.05 (expression_change 47.88, cell_state 44.98,-   de_direction -0.0596); alpha = 0.05 -> board 53.02 (expression_change-   47.88, cell_state 47.86); alpha = 0 (control) -> board 54.15 with all-   expression groups at 50.00.  de_score/de_direction are identical at-   alpha = 0.05 and 0.2 (direction metrics are magnitude-invariant), so the-   prev->last per-gene trend points away from the held-out target on this-   view for any alpha > 0; the committed default is the family boundary-   alpha = 0.  VEC_ALPHA re-enables the mechanism for future probes.--2. Expression baseline: the last observed stage's cells are otherwise copied-   verbatim (values and sparsity structure), stratified-sampled to max_cells-   when needed.--3. Coordinates (unchanged from parent): the last stage's point cloud is put-   in a deterministic canonical frame (centroid at origin, PCA rotation with-   fixed chirality and axis orientation via third moments) and then rescaled-   isotropically to ``FACTOR * max_k RMS(input_k)``.  Rationale: the measured-   RMS radius of a sample can only underestimate the extent of the structure-   (field of view / sections kept), it is not monotone in time, and the embryo-   grows, so the target extent is at least the largest observed input RMS,-   damped by FACTOR.  Cell-to-cell relative geometry is preserved.--``VEC_MECH_OFF=1`` disables the expression extrapolation (alpha forced to 0;-output equals the parent node: copied expression + scaled coordinates).-``VEC_ALPHA`` overrides ALPHA (scan knob, defaults to the committed value).-``VEC_FACTOR`` overrides FACTOR (scan knob).+   the family is falsified in both directions.  gamma = 1.0 -> board 51.10+   (shape_scale 54.37, d2_shape 0.0570); gamma = 0.5 -> 52.71 (shape_scale+   60.84, d2_shape 0.0546); gamma = 0 (control) -> 54.15 (shape_scale+   66.60, d2_shape 0.0489); gamma = -0.5 (amplify anisotropy, diagnostic+   only) -> 54.18 (shape_scale 66.75, d2_shape 0.0436), within noise of+   gamma = 0.  d2_shape is monotone in gamma toward isotropy: the target+   E9.5 shape spectrum sits essentially at the last stage's spectrum, so+   no damped trend extrapolation of it helps (and negative gamma gains+   would be proxy-specific scorer chasing, explicitly not committed).  The+   committed default is the family boundary GAMMA = 0; VEC_GAMMA+   re-enables the mechanism for future probes.++3. Coordinates: the last stage's point cloud is put in a deterministic+   canonical frame (centroid at origin, PCA rotation with fixed chirality+   and axis orientation via third moments), per-axis scaled as in (2), then+   rescaled isotropically to ``FACTOR * max_k RMS(input_k)``.  Rationale for+   the isotropic target: the measured RMS radius of a sample can only+   underestimate the extent of the structure, it is not monotone in time,+   and the embryo grows, so the target extent is at least the largest+   observed input RMS, damped by FACTOR.++``VEC_MECH_OFF=1`` disables the anisotropic mechanism (gamma forced to 0;+output equals the parent node: copied expression + isotropically scaled+coordinates).  ``VEC_GAMMA`` overrides GAMMA (scan knob).  ``VEC_ALPHA``+overrides ALPHA (falsified family, kept at 0).  ``VEC_FACTOR`` overrides+FACTOR (scan knob). """  from __future__ import annotations@@ -64,6 +86,28 @@ from src.task2_spatial.view_io import (  FACTOR = 0.946 ALPHA = 0.0+GAMMA = 0.0  # family boundary: proxy falsified every gamma != 0 (see module docstring)+++def _eig_desc(coords: np.ndarray) -> tuple[np.ndarray, np.ndarray]:+    """Covariance eigen-decomposition, eigenvalues/vectors in descending order."""+    x = np.asarray(coords, dtype=np.float64)+    x = x - x.mean(axis=0)+    cov = (x.T @ x) / max(len(x) - 1, 1)+    evals, evecs = np.linalg.eigh(cov)+    order = np.argsort(-evals, kind="stable")+    return evals[order], evecs[:, order]+++def sigma_spectrum(coords: np.ndarray) -> np.ndarray:+    """Per-axis standard deviations (sqrt eigenvalues), descending order.++    Rotation-invariant shape spectrum of the point cloud; this is what the+    per-axis trend pairs between stages (rank pairing, not physical axes --+    the eigenframes of two stages may be permuted relative to each other).+    """+    evals, _ = _eig_desc(coords)+    return np.sqrt(np.maximum(evals, 0.0))   def pca_canonicalise(coords: np.ndarray) -> tuple[np.ndarray, dict]:@@ -76,10 +120,7 @@ def pca_canonicalise(coords: np.ndarray) -> tuple[np.ndarray, dict]:     """     x = np.asarray(coords, dtype=np.float64)     x = x - x.mean(axis=0)-    cov = (x.T @ x) / max(len(x) - 1, 1)-    evals, evecs = np.linalg.eigh(cov)-    order = np.argsort(-evals, kind="stable")-    evals, evecs = evals[order], evecs[:, order]+    evals, evecs = _eig_desc(x)     if np.linalg.det(evecs) < 0:         evecs[:, -1] *= -1.0     diag = {"eig_frac": [float(v / max(evals.sum(), 1e-12)) for v in evals]}@@ -117,6 +158,7 @@ def main() -> None:     mech_off = os.environ.get("VEC_MECH_OFF", "") == "1"     factor = float(os.environ.get("VEC_FACTOR", "") or FACTOR)     alpha = 0.0 if mech_off else float(os.environ.get("VEC_ALPHA", "") or ALPHA)+    gamma = 0.0 if mech_off else float(os.environ.get("VEC_GAMMA", "") or GAMMA)      manifest = load_manifest(args.data)     genes = panel_genes(args.data, manifest)@@ -149,19 +191,41 @@ def main() -> None:         del prev      canon, pca_diag = pca_canonicalise(last.coords[idx])-    radii = [rms_radius(read_stage(args.data, e, genes).coords) for e in inputs_by_time(manifest)]+    stages = [read_stage(args.data, e, genes) for e in inputs_by_time(manifest)]+    radii = [rms_radius(st.coords) for st in stages]     target_rms = float(np.max(radii)) * factor++    axis_info: dict = {}+    if gamma != 0.0 and prev_e is not None:+        # Rank-paired per-axis amplitude trend: sigma spectrum (sqrt eigenvalues,+        # descending) of prev vs last, s_j = 1 + gamma * (r_j - 1) applied to the+        # canonical coords BEFORE the isotropic rescale (so only axis ratios --+        # the cloud shape -- change; the final RMS stays at target_rms).+        sig_prev = sigma_spectrum(stages[-2].coords)+        sig_last = sigma_spectrum(stages[-1].coords)+        r = sig_last / np.maximum(sig_prev, 1e-9)+        s = np.maximum(1.0 + gamma * (r - 1.0), 1e-3)+        canon = canon * s+        axis_info = {+            "gamma": gamma,+            "sigma_prev": [round(float(v), 2) for v in sig_prev],+            "sigma_last": [round(float(v), 2) for v in sig_last],+            "r_j": [round(float(v), 4) for v in r],+            "s_j": [round(float(v), 4) for v in s],+        }+     coords = scale_to_rms(canon, target_rms).astype(np.float32)     info = {         "mech": "off" if mech_off else "on",         "factor": factor,-        "dt_ratio": float(ratio),+        "dt_ratio": None if ratio is None else float(ratio),         "n": int(len(idx)),         "pca": pca_diag,         "rms_inputs": [round(r, 2) for r in radii],         "rms_out": round(rms_radius(coords), 2),     }     info.update(delta_info)+    info.update(axis_info)     if prev_e is not None:         info["step"] = [prev_e["stage"], last_e["stage"], manifest["target"]["stage"]]     print(json.dumps(info, default=float), file=sys.stderr)

调研来源?调研员查到并用到的知识条目和文献检索结果(只列标题和编号)。

用到的知识库条目

编号标题出处
k007Interval staging and held-out-window filtering of external datanotes/official/来件/virtualembryo.ai/rules.md
k026Canonicalise predicted 3D coordinates before submissionnotes/pitfalls/04_scorer_invariance.md
k016Degenerate-solution checks for population predictionsnotes/handover/02_知识学习路线.md

分析结果?分析员写的 ANALYSIS.json:改了什么、各组分数怎么变、假设是否成立、经验和下一步建议。

改了什么实现 T2HX-05 逐主轴幅度趋势外推:对 prev/last 各取 PCA 谱(秩配对),r_j=σ_last/σ_prev,在各向同性缩放前对规范化坐标乘 s_j=1+γ(r_j−1),机制留在 VEC_GAMMA 开关后;proxy 探针证伪后按停止规则提交 γ=0,输出与父节点 13 逐字节一致(md5 相同)。顺带修复了父节点单输入视图 float(None) 崩溃 bug。Engineer 说法与变化量表一致(54.15=父分,四组 +0.00)。
各组分数的变化cell_state:噪声内/不变:50.00→50.00(+0.00),仍钉在 copy_last 地板。
expression_change:噪声内/不变:50.00→50.00(+0.00);机制本就不动表达,γ=1 探针下也恒为 50.00。
local_spatial:噪声内/不变:50.00→50.00(+0.00);γ=1 探针下仅 50.02(线性映射不动邻域,符合设计预期)。
shape_scale:提交值不变:66.60→66.60(+0.00);但机制打开时被证伪——探针 γ=0.5→60.84、γ=1.0→54.37(d2_shape 0.0489→0.0570,单调恶化);γ=−0.5→66.75(+0.15,在 1 分噪声内,且属打分器特化,未提交)。
family_idT2HX-05
假设是否成立否
经验
  1. 在本榜上,对两输入阶段的 PCA 谱比值做阻尼外推(趋向各向同性,r_j=[0.558,0.610,0.751])使 shape_scale 单调恶化(γ=1 时 66.60→54.37),说明目标 E9.5 的形状谱基本停在 last 阶段自身,沿 prev→last 谱趋势再走一步是错方向。
  2. 负 γ(反趋势、放大各向异性)探针 +0.15 shape_scale / +0.03 榜分,均在 1 分噪声内且属利用 proxy 趋势伪影的打分器特化——此类『反向微调』不值得提交或续扫。
  3. 至此全局线性几何(坐标侧)已有 4 组独立证据饱和于 shape_scale=66.60:各向同性缩放 0.946×maxRMS 是局部最优,kNN 残差形变(node9/15)、各向异性固定混合(node6)、逐主轴谱趋势外推(node16)全部 ≤ 该值;后续不要再试只动全局线性坐标变换的方案。
  4. 两阶段 PCA 特征帧会发生轴置换(prev 轴0 与 last 轴2 |cos|=0.91,对角 |cos| 仅 0.42/0.28/0.13),跨阶段逐轴比较必须用秩排序谱(旋转不变量)配对,不能按物理轴方向配对。
  5. 先离线打印诊断量(σ_prev、σ_last、r_j、轴比)再决定是否耗查分,本节点 4/20 次查分即完成双向证伪,是值得复用的预算纪律。
  6. 『族边界提交』(机制证伪后交参数=0、代码留开关)使节点分数不低于父节点且保留了可复用实现与开关(VEC_GAMMA/VEC_ALPHA),是安全的收尾方式。
mechanism_active否
下一步建议
  1. 停止坐标形状侧的全局线性改动(针对 shape_scale 组):4 组证据已饱和于 66.60;若还要动形状,只剩非线性的、由表达/细胞类型组成驱动的空间重排,但 node9/15 kNN 形变已两次为负,先验不利,投入前必须先做离线诊断。
  2. 表达三组(expression_change/cell_state/local_spatial)钉在 50.00 地板且 prev→last 趋势族全灭(6 组证伪):改用与该差正交的信号源——用 external/ 的 Qiu E8.75 心脏细胞锚定跨样本技术差(node13 已证实 −0.124 全局水平偏移是混淆主分量),先 1 次查分看 de_direction 符号再决定是否投入。
  3. 备选:用 prior/ 调控网络约束下的组成演化方向做表达修正,同样先以单次查分验证 de_direction 符号;任何新方向都沿用本节点的『离线诊断→单探针→停止规则』预算纪律。

对话摘要?每个角色和大模型对话的统计:轮数、工具调用、用时、token 数和最后的回答摘录;原始记录只给路径。

只给统计和最后回答的摘录;完整对话请到原始记录位置里列出的文件看。

分析员

角色?调研员写计划、工程师改代码、分析员解读分数、审查员检查作弊。分析员 alibaba-token-plan-cn/qwen3.8-max
调用次数1 次
轮数?大模型一共回复了几轮(每轮可以调用多个工具)。4
工具调用?大模型调用读文件、执行命令等工具的次数,按工具名统计。共 4 次:bash 3、write 1
用时1 分
token 数?输入 / 输出(含思考)的 token 数,来自接口返回的用量。输入 18,133 · 输出 1,470 · 思考 2,367
任务(第一行)分析节点 n16 的打分结果,写 ANALYSIS.json
最后的回答(摘录)
ANALYSIS.json written
原始记录位置?完整对话记录在 Spark 上的文件路径;看板不复制原始内容。/home/spark-longxinyang/vec/runs/formal/20261003-070222-search-t2-heart-extrap-g24-D/nodes/16/analyst.jsonl 16 KB
/home/spark-longxinyang/vec/runs/formal/20261003-070222-search-t2-heart-extrap-g24-D/nodes/16/analyst.stderr

工程师

角色工程师 alibaba-token-plan-cn/qwen3.8-max
调用次数1 次
轮数31
工具调用共 34 次:bash 24、edit 9、write 1
用时11 分
token 数输入 65,041 · 输出 13,975 · 思考 13,963
任务(第一行)按计划修改程序:T2HX-05 逐主轴幅度趋势外推(各向异性形状)@node13
最后的回答(摘录)
All checks pass. Final state of `solution/`: `run.py` (GAMMA=0.0 committed, mechanism behind `VEC_GAMMA`), `METHOD.md`, `EXECUTION.json` (gpu=false). Verified: default output md5-identical to parent, vec-check ok, deterministic (seed 0/1 reruns), single-input fallback fixed (parent crashed on `float(None)`), disguised view (+1d time shift, renamed paths, shuffled manifest) gives byte-identical predictions. 4/20 queries used.

**做了什么**:按 PLAN T2HX-05 实现逐主轴幅度趋势外推——对两输入阶段各取 PCA 谱(秩配对、旋转不变),r_j=σ_last/σ_prev,对各向同性缩放前的规范化坐标乘 s_j=1+γ(r_j−1);离线诊断确认 r_j=[0.558,0.610,0.751] 无极端值、两阶段特征帧轴置换(故用谱配对)。另修复了父节点单输入视图 `float(None)` 崩溃 bug。

**查分结果**:γ=1.0 → 51.10(shape_scale 54.37,d2_shape 0.0489→0.0570);γ=0.5 → 52.71;γ=−0.5(诊断)→ 54.18(+0.03,噪声内,且属打分器特化不提交);γ=0 对照与提交 → 54.15,输出逐字节=父节点。机制双向证伪,触发 PLAN 停止规则,提交族边界 γ=0。

**下一步最值得试**:坐标侧全局线性几何已 4 组饱和于 66.6(各向同性缩放最优,kNN 形变、各向异性混合、谱外推均负)。表达三组的 50.00 地板需要与 prev→last 差正交的信号源:用 external/ 的 Qiu E8.75 心脏细胞锚定跨样本技术差(−0.124 水平偏移是已证实的混淆主分量),或 prior/ 调控网络约束下的组成演化;每个方向先 1 次查分验证 de_direction 符号再投入。
原始记录位置/home/spark-longxinyang/vec/runs/formal/20261003-070222-search-t2-heart-extrap-g24-D/nodes/16/engineer.jsonl 174 KB
/home/spark-longxinyang/vec/runs/formal/20261003-070222-search-t2-heart-extrap-g24-D/nodes/16/engineer.stderr

调研员

角色调研员 alibaba-token-plan-cn/qwen3.8-max
调用次数1 次
轮数1
工具调用共 0 次:—
用时4 分
token 数输入 13,257 · 输出 3,050 · 思考 8,192
任务(第一行)为节点 n16(改进,父节点 n13)写改进计划 PLAN.json
最后的回答(摘录)
ivation": "父节点 13/12 的 cell_state、expression_change、local_spatial 三组均钉在 50.00(copy_last 地板),且『沿观测趋势外推表达』整族已有 5 组独立证伪(node4、node10、node13、方法卡 damped_shift、官方 pseudobulk_shift),ANALYSIS 明确不要再碰表达侧趋势族。唯一非地板、仍有上探空间的是 shape_scale=66.60,ANALYSIS 指出它被 d2_shape=0.0489 卡住,『只靠全局缩放无法再涨,需改变点云形状本身』。node6 曾试各向异性固定混合(w=0.35/0.7,净负),但那是把形状向各向同性收缩的固定权重,不是沿观测趋势外推;node9 的 kNN 残差形变改变的是局部相对几何且 proxy 上为负(54.15→53.92)。本方案改做各主轴幅度的趋势外推,是未测过的形状变体。",
  "approach": "1) 保留父节点全部:表达照抄末阶段、确定性 PCA 规范化、各向同性缩放到 0.946×max_k RMS。2) 新增机制(在最终各向同性缩放之前):对 prev 与 last 各自跑同一 pca_canonicalise,得各主轴标准差 σ_prev[j]、σ_last[j](sqrt 特征值);计算逐轴比值 r_j=σ_last[j]/σ_prev[j];对 last 的规范化坐标按轴乘 s_j=1+γ·(r_j−1),再做原各向同性缩放。这样只改变轴间比例(形状),γ 是趋势阻尼。3) γ 初值与搜索:先查 γ=1.0(一步趋势)与 γ=0.5 两个探针;若 shape_scale<66.0 立即停止并交 γ=0。范围上界 γ≤1(不外推超过一个观测步长,防发散)。4) 单输入退路:prev 不存在时无 σ_prev,γ 强制 0,输出=父节点。5) vec-score 快筛:每次只跑 proxy seed0,比较 shape_scale 与 d2_shape;用『首查 γ=1.0 若 shape_scale<66.0 即停』的停止规则控预算(照抄 node13 的纪律)。6) 视图无关:不读 board/时间,只用两输入阶段的协方差特征值,时间平移不变。",
  "expected_groups": ["shape_scale"],
  "risks": "a) 逐轴比值可能主要反映 prev/last 的样本技术差异而非生物形状趋势(与表达侧全局水平差同理)——Engineer 先看离线诊断:打印 r_j 各分量,若全部≈1(形状几乎没变)则机制无量可外推,直接交 γ=0 不耗查分;若某轴 r_j 极端(>2 或<0.5)提示技术噪声,降 γ 或放弃。b) PCA 主轴在两阶段间可能交换次序/方向,导致逐轴比值错配——用特征值降序配对并在日志打印轴对应;若错配严重则该机制不可靠。c) 与 node6 各向异性净负的先验冲突——若 γ=0.5 与 γ=1.0 均 ≤66.0,即视为与 node6 一致被证伪,交 γ=0。d) 查分噪声约 1 分,<1 分的变化不算进步,需看 d2_shape 方向确认。",
  "family_id": "T2HX-05",
  "mechanism": "把标量尺度趋势推广到逐主轴幅度:在 PCA 规范帧内,沿观测到的 prev→last 各主轴标准差比值做阻尼外推(s_j=1+γ(r_j−1)),只改轴间比例即点云形状,不动表达、不动相对邻域。",
  "vs_constant_shift": "不是每型常数位移(不动表达、不动细胞),也不是全局各向同性重缩放(那是父节点已做的 0.946×maxRMS);它按每条主轴各自的数据驱动比值缩放,不同轴位移系数不同,因此改变的是形状(轴比)而非单一尺度。",
  "mechanism_evidence": "Engineer 打印:各轴 σ_prev、σ_last、r_j(确认形状确有变化且方向合理)、γ>0 时逐轴 s_j≠1、d2_shape 与 shape_scale 相对 γ=0 的变化;并报告四组分各自增减。若 r_j 全≈1 说明机制无量可动,应如实报告。",
  "mechanism_off_control": "同一程序设 γ=0(或 VEC_GAMMA=0/VEC_MECH_OFF=1):s_j 全为 1,坐标管线退化为父节点,输出应逐字节等于父节点 12(54.15,50/50/50/66.60)。预期差别:γ>0 时仅 shape_scale 与 local_spatial 可能变化,表达三组不变。",
  "sources": []
}
```
原始记录位置/home/spark-longxinyang/vec/runs/formal/20261003-070222-search-t2-heart-extrap-g24-D/nodes/16/researcher.jsonl 12 KB
/home/spark-longxinyang/vec/runs/formal/20261003-070222-search-t2-heart-extrap-g24-D/nodes/16/researcher.stderr