# `jsmpi` TODO
## P0:当前优先级最高
- [x] 补齐 `rsmpi` 常用 trait 与模块路径兼容性
- [x] 增加 `receive_into`
- [x] 完善 `barrier` / `send` / `receive` 的错误处理与超时语义
- [x] 验证 `ping_pong`、`broadcast_seed` 在浏览器 demo 中的真实运行结果
- [x] 增加最小浏览器集成测试流程
## P1:近期要做
- [x] 实现 `gather`
- [x] 实现 `scatter`
- [x] 实现基础 `reduce` / `all_reduce`
- [x] 梳理 `topology`, `collective`, `datatype` 模块边界
- [x] 增加更多迁移示例(如 ring、sum-reduction、monte-carlo)
- [x] 改善 demo 页面状态展示与错误信息
## P2:中期增强
- [ ] 引入更高效的二进制/typed-array 数据路径
- [ ] 评估 worker-to-worker 直连与 coordinator 中转的优化空间
- [ ] 增加 job 生命周期管理与 abort 机制
- [ ] 支持更丰富的数据类型与切片通信
- [ ] 补齐文档中的 API 对齐矩阵
## 工程事项
- [x] 增加 CI:`cargo check` + wasm 示例构建
- [x] 增加 lint / format 检查
- [ ] 补仓库许可证与发布策略说明
- [ ] 视需要增加 feature flags(`browser`, `native-shim`, `debug-log`)
## 生产级就绪(Production Readiness)
### P0:发布阻断项(必须完成)
- [x] 冻结 launcher/runtime 协议结构(消息字段、状态机、错误码)并增加 `protocol_version`
- [x] 为跨 worker 消息增加输入校验(类型、长度、非法状态转换)
- [x] 为 job 生命周期补齐一致语义:`start` / `stop` / `timeout` / `worker crash`
- [x] 增加关键路径测试:`barrier`、`send/receive`、`gather/scatter/reduce` 的成功与失败场景
- [x] 增加浏览器 e2e 稳定性套件(最少 3 轮重跑,结果一致)
- [x] 建立发布前质量门禁:`cargo check`、`cargo test`、wasm 构建、e2e 全通过
### P1:可观测性与可靠性(强烈建议)
- [x] 统一结构化日志字段:`job_id`、`rank`、`phase`、`event`、`error_code`
- [x] 增加运行指标采集(启动耗时、通信时延、barrier 等待时间、失败率)
- [x] 明确错误分级与用户可见文案(可重试/不可重试)
- [x] 增加超时与重试策略,并补充压测下的退化行为验证
- [x] 输出浏览器兼容矩阵(Chrome/Edge/Firefox/Safari)与能力差异说明
### P2:工程化与长期维护
- [ ] 完整 semver 版本策略(含破坏性协议变更规则)
- [ ] 建立发布流程文档(发布步骤、回滚步骤、兼容性检查)
- [ ] 建立性能基线与回归阈值(消息大小 x rank 数量)
- [ ] 增加安全扫描:`cargo audit`、`npm audit`、依赖升级策略
- [ ] 补运维/排障手册:常见故障、定位步骤、恢复操作
### 生产验收标准(Definition of Done)
- [ ] 连续 7 天主分支构建稳定(无随机失败)
- [ ] 关键 e2e 用例在目标浏览器上通过率达到 99%+
- [ ] 无 blocker 级别缺陷,无高危依赖漏洞
- [ ] 发布文档、变更日志、回滚说明齐全并经演练验证
## 已完成里程碑
- [x] 初始化 `jsmpi` crate 骨架
- [x] 创建跨目标示例:`hello_ranks` / `ping_pong` / `broadcast_seed`
- [x] 创建可选示例的浏览器 demo 页面
- [x] 增加 `npm run build:demo` 与 `npm run serve:demo`
- [x] 打通本地静态服务与 Trunk 构建流程
- [x] 补初版技术规范与开发指导文档