# v0.2.1 交付冻结说明

## 范围

保留此前 `a7c60d4` 已完成的安装/升级修复、Pi/DSH 子代理工具加载修复和既有 v0.2.1 回归修复。本次固定网络与抓取改动，不增加 fused_search 线路记忆、线路健康共享、主动探测或新的搜索引擎。

### 本次固定的行为

- `fetch_page`：原站优先、正文清理、24 小时缓存、focus 筛选；正常成功请求不等待 Jina。
- 可选 curl 同线路兼容兜底；没有 curl 不影响主传输正常工作。支持主传输加载/解析失败及部分正文流中断后的恢复。
- Jina 作为备用来源；保留双路失败原因，不把空正文当成功，也不丢弃已获得的简短正文。
- 网页重定向后的相对链接按最终 URL 解析。
- 网页和服务传输（包括融合搜索）最多尝试代理 5 次，连续连接失败后允许直连；取消/总截止时间优先。代理 socket 断开和 CONNECT 超时也由显式重试计数管理，避免 Undici 内部不断重连。
- 目标访问权限交给本机网络、防火墙及代理；普通抓取不再拦截内网地址、预检 DNS 或固定 IP。
- 保留 HTTP(S)、页面 URL 凭据限制、正常证书验证、取消、下载大小、跳转次数及超时限制。

完整策略、代理环境变量语义和注意事项见 [network-policy.md](network-policy.md)。

## 兼容与运行条件

- 包版本：`0.2.1`；Node 要求沿用 `>=22.13`。
- 无新增 npm 依赖。curl 是可选系统命令，已在 curl 8.18.0 上运行真实进程测试；未声称覆盖全部旧版本 curl。
- 工具输入及结果字段不变；Pi、DSH、MCP 继续共享核心。
- `fused_search` 仍使用现有 HTTP 传输和结果融合逻辑；本次没有引入搜索引擎 curl 兜底或新增线路优化。
- 旧地址校验/pinning helper 保留导出兼容性，不用于普通 `fetch_page`。

## 验收证据

- `npm run prepublishOnly`：全部通过，含安装/升级、配置迁移、Pi/DSH/MCP、引擎、融合搜索、Jev、网络、冒烟和 v0.2.1 回归测试。
- 网络专项：35 项；修复审计回归：16 项；抓取/curl 兜底：15 项。
- 真实本机 HTTP/HTTPS/CONNECT/curl 夹具验证：5 次重试、socket 断开、代理转直连、取消、证书验证、压缩、跳转、大响应、缺失依赖、curlrc/环境变量隔离，以及原站阶段共享预算。
- 独立只读审查发现的重试分类、无效响应头分类、原站阶段预算、curl 直连超时和取消分类问题均已处理，并添加对应回归测试。
- 本机热连接样本显示“原站抓取＋清理”约 1–2 ms、裸 curl 子进程约 6 ms、缓存约 0.05 ms；仅用于确认快速路径开销，不代表公网性能保证。

## 必须知晓的变化

1. **代理失败后可能直连**，目标可能看到本机出口 IP；配置代理不再等于绝不直连。
2. **内网目标不再由工具屏蔽**；网络隔离及私有服务访问控制由部署环境负责。
3. 需要登录、验证码、浏览器 JS 或被网站封禁的页面仍可能失败；不承诺任意网页必定可用。
4. Jina 备用路径会向第三方发送目标 URL；正常原站成功时不调用它。
5. 本机已安装的旧版本不会因修改工作区而自动更新，需要单独安装交付包并重载宿主。

## 交付边界

本次形成可安装 npm tarball 和本地源码冻结，不发布 npm、不推送远端、不修改用户代理配置。原有 `package-lock.json` 工作区改动保留，不混入本次源码提交。
