Skip to content

Releases: moonbowterfly/dsh-bio-galatea

galatea 0.1.6 — 解释器首选有界异步等待 + R2 修复批次

Choose a tag to compare

@moonbowterfly moonbowterfly released this 23 Oct 08:55

修复

  • 首次解释器选择不再假失败:冷探测窗口内首个工具调用改为有界异步等待(默认 8s 预算内等待探测落定并返回真实结果),超预算才回落到可重试的显式『探测中』状态;并发首调共享同一次探测,选定后零等待命中缓存(修复 0.1.3 引入的首调 PYTHON_PROBE_PENDING 回退)
  • loop 工具桥统一信封(修复桥返回体丢失)+ loop 策略 v3 / 评分契约 v2
  • setup 超时覆盖真实预算 + 中止时终止 Python 进程树;CH01 低复杂度序列新颖性预警

npm: npm install @dsh-bio/dsh-bio-galatea@0.1.6(shasum 975e6c0f44c01eeff52587f63e83a870febe124e)

v0.1.5 探测失败不再被报成依赖缺失

Choose a tag to compare

@moonbowterfly moonbowterfly released this 02 Oct 11:45

探测失败不再被报成依赖缺失

G 系列跨插件契约层修复(独立包,不合并)。

修复

  • 探测失败被当成缺失:probeAnalysisDeps 把 spawn 失败、解释器异常退出、
    20s 超时与同步抛异常四条路径都归为 null,collectChecks 再把 null
    判成 runtime.analysis=missing 并断言「biopython / numpy 缺失」。探针没跑成
    与依赖真缺失是两件事,前者在系统繁忙或解释器无响应时就会发生,把它写成缺失
    是对用户的失实陈述。现改为三态返回 ok / missing / probe-failed;
    readAnalysis 把旧版探针可能回传的 null 归一为 probe-failed;check
    判定把 probe-failed 映射为 warn,详情文案区分「探测未完成」「未找到可用
    的 Python 解释器」与「确实缺依赖」三种情况。warn 不进 requiredCheckIds,
    域可用性判定不受影响,有 warn 时 status 仍为 degraded 而非 ready。
  • capabilities 依赖状态折叠:同 gem,warn 与check 缺席都归unknown
    而非 unavailable。

测试

  • test/analysis-probe-semantics.mjs 新增 7 项(探针抛异常 / 回传 null /
    确认缺失 / 就绪 / capabilities 三态 / 全 ok 零误报)。
  • fixture 补warn 场景。

验证

  • 真实路径:注入探针崩溃但 torch 就绪 → runtime.analysis 为 warn 且文案
    「探测未完成」,python.torch 保持 ok(不连坐)。
  • 变异:把 warn 判定改回 missing → actual: 'unavailable', expected: 'unknown',exit 1;还原 → exit 0。
  • npm test exit 0;check-counts 9 pass / 0 fail / 0 warn;schema DSL 审计
    19 个工具 0 违规。

v0.1.4 版本号单一真值源修复

Choose a tag to compare

@moonbowterfly moonbowterfly released this 01 Oct 15:02

fix: /health 自报版本号与磁盘不一致

问题

src/integration.js 的 PLUGIN_VERSION 是硬编码字面量 '0.1.2'。bump package.json 到 0.1.3 时漏改此处 → 运行时 /health 与 /v1/status 继续自报 0.1.2,而磁盘已是 0.1.3。

经重启验证:非缓存问题,是真实的第二真值源缺陷。

改动

const PLUGIN_VERSION = JSON.parse(
  readFileSync(new URL('../package.json', import.meta.url), 'utf8'),
).version

新增门禁

test/check-version-source.mjs —— 断言源码中不存在硬编码版本号字面量、且从 package.json 读取。已做变异实验:改回硬编码 → 3 项报红 + exit 1;还原 → 全绿 exit 0。

npm test exit 0

v0.1.3 解释器探测异步化

Choose a tag to compare

@moonbowterfly moonbowterfly released this 01 Oct 14:09

perf: 解释器探测不再阻塞主进程

问题

pythonExe() 惰性同步执行 spawnSync 逐候选 import torch,每候选 30s 超时上限。首次调用任一 galatea 工具时主进程被阻塞。

改动

  • spawnSync → 异步 spawn + Promise,不阻塞 Node 主线程
  • single-flight:并发首次调用复用同一探测 promise,不重复探测
  • generation 计数:setup 成功后失效旧探测,避免旧结果覆写新环境
  • setImmediate 延迟启动,调用方先收到 PYTHON_PROBE_PENDING;保持「不在插件加载期预热」的既有权衡
  • 失败路径返回结构化 PYTHON_TORCH_MISSING + install_hint

新增测试

test/python-bridge.js 覆盖探测未完成 / 缓存命中 / 全候选失败三档

验证

npm test exit 0