Repository navigation
Releases: moonbowterfly/dsh-bio-galatea
Releases · moonbowterfly/dsh-bio-galatea
Release list
galatea 0.1.6 — 解释器首选有界异步等待 + R2 修复批次
修复
- 首次解释器选择不再假失败:冷探测窗口内首个工具调用改为有界异步等待(默认 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 探测失败不再被报成依赖缺失
探测失败不再被报成依赖缺失
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 testexit 0;check-counts 9 pass / 0 fail / 0 warn;schema DSL 审计
19 个工具 0 违规。
v0.1.4 版本号单一真值源修复
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 解释器探测异步化
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