Files
orbit/docs/reports/phase-3.md

65 lines
10 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# P3 Pulse 功能范围核对与阶段验收
核对日期:2026-09-17。依据[原功能说明](../01-functional-spec.md)、[可靠性设计](../04-reliability-and-data.md)、[开发计划](../08-development-plan.md)及[全平台发布门槛](../05-production-acceptance.md)逐项检查。此报告区分Pulse功能交付和全平台生产验收;后者仍未通过。
阶段结论:P3平台功能范围已核对并通过本轮完整回归,可推进P4 Weave。新增相对延迟及四种重试全停场景已包含在最终脚本,20个可运行示例通过,命令终态0。下表明确保留首版尚未完成的生产门槛及示例交付项;不能用阶段验收替代它们。
## 1. Pulse功能与证据
| 原要求 | 当前行为与主要证据 |
| --- | --- |
| 立即、相对延迟、指定时间提交 | 立即受理、数据库时间计算delay_ms、绝对available_at;[HTTP事务用例](../../internal/storage/mysql/task_integration_test.go)核对同键并发、相对时长、非法组合与批量;[SDK真实执行](../../sdk/go/task_delay_integration_test.go)核对数据库创建/开始时间不早于保存的执行时间 |
| 批量受理、逐项恢复 | 最多32项/512 KiB,单项事务和身份复用,区分明确失败/未知/未尝试;[批量报告](phase-3-batch-tasks.md)记录部分已提交后的真实HTTP回执丢失及原键补交 |
| 幂等及不可变参数/策略 | 任务、身份回执、事件与审计同事务;同语义原回执、变更冲突;[任务用例](../../internal/storage/mysql/task_integration_test.go)核对16并发只创建一次和精确数字;新增可选字段的[旧摘要兼容](../../internal/storage/mysql/task_delay_test.go) |
| 改参数形成关联新任务 | 新提交身份和相同business_key,旧输入保持;[查询示例](../../sdk/go/examples/task-query/main.go)分别读取text/json任务核对输入。该关联不等于业务去重或retry_of,原任务需调用方决定如何处理 |
| 单次/总时限、最晚开始、安全重试 | 冻结策略、有限退避及未知效果;[决策](../../pulse/retry/decision_test.go)、[真实事务](../../internal/storage/mysql/worker_retry_integration_test.go)核对预算/回滚/迟到;[全停恢复](phase-3-delay-recovery.md)保留退避、次数和截止,过期不补发 |
| 等待/运行取消 | 持久化意图、预占阻止开始、运行收集结果、未知效果仍核查;[取消事务](../../internal/storage/mysql/worker_cancel_integration_test.go)验证开始竞争/回滚,[取消报告](phase-3-cancellation.md)包含自动SDK通知、丢通知及不协作处理器 |
| 人工核查与重试 | 专门权限、版本、原因/证据、安全声明;核查不改旧尝试,人工重试创建唯一直接后继;[恢复用例](../../internal/storage/mysql/task_recovery_integration_test.go)验证竞争、审计失败回滚、原输入/结果保留及管理所有权;[接口/故障报告](phase-3-task-recovery.md) |
| Cron/固定间隔/时区/边界 | 五段Cron、fixed-rate、显式时区快照、开始/结束;[规则测试](../../pulse/schedule/rule_test.go)和[调度报告](phase-3-schedules.md)覆盖夏令时缺失/重复时刻;不支持的fixed-delay明确拒绝 |
| 唯一触发、版本与漏跑 | SKIP/COALESCE/CATCH_UP及有限窗口/批次/持久化限速,任务与进度同事务;[调度事务](../../internal/storage/mysql/schedule_integration_test.go)竞争只生成3项、扫描冷却有效、版本和覆盖范围保留 |
| 计划暂停、重叠与恢复 | PARALLEL/SERIAL/SKIP,暂停不取消旧任务,串行遇未知效果继续阻塞;[调度进程恢复](../../sdk/go/worker_process_integration_test.go)先杀唯一节点,再由两个新节点恢复真实积压 |
| WSS、能力、容量、租约、排空 | 独立Worker及自动SDK;[P2验收](phase-2.md)和[执行事务](../../internal/storage/mysql/worker_integration_test.go)核对16个竞争请求只产生2个允许的许可、重连不重置容量、旧会话/旧尝试拒绝 |
| 队列与应用共享额度 | 应用额度→队列统一锁顺序,开始窗口、未终结数、限速及背压;[队列报告](phase-3-queue-resources.md)、[应用报告](phase-3-application-resources.md)含跨命名空间竞争、回滚、原回执及进程恢复 |
| 同资源互斥与旧执行隔离 | 显式concurrency_key、跨队列单许可、递增资源令牌;[资源键用例](../../internal/storage/mysql/keyed_concurrency_integration_test.go)验证竞争、释放一次、序号不回绕;[SDK/资源端示例](phase-3-keyed-concurrency.md)展示拒绝旧令牌 |
| 优先级、项目间派发与缓冲上限 | 0–9冻结优先级、等待补偿、节点内应用/队列轮转、有界池和发送缓冲;[优先级报告](phase-3-priority-fairness.md)包含真实数据库应用行锁阻塞时其他应用仍能领取。多节点不均衡下延迟和容量留P6 |
| 权限、隔离、敏感数据 | 身份/命名空间/动作/队列范围按事务检查;[任务](../../internal/storage/mysql/task_integration_test.go)、[来源](../../internal/storage/mysql/task_source_integration_test.go)及[历史](../../internal/storage/mysql/task_history_integration_test.go)回归验证跨范围拒绝、当前权限和不返回秘密;凭据安全轮换仍待P6 |
| 查询、审计与来源 | ID、状态、队列、精确业务键、创建时间和绑定筛选的分页;[查询](phase-3-task-queries.md)、[来源](phase-3-task-source.md)、[恢复审计](phase-3-task-recovery.md)。流程来源随Weave接入,损坏/未知所有者返回503,不能假装普通任务 |
| 持久化结果、订阅与接收方去重 | 结果流序号按提交顺序分配,有限交付/证明/ACK、暂停与人工补投;[订阅核心](phase-3-result-subscription-core.md)、[通信](phase-3-result-subscription-transport.md)、[消费器](phase-3-event-consumer-sdk.md)、[独立Inbox](phase-3-result-inbox.md)包含真实COMMIT和进程故障 |
| 业务事务到平台的可靠提交 | [独立Outbox](phase-3-task-outbox.md)冻结目标/操作/请求,业务记录同事务,HTTP事务外,原键恢复,24小时/100次预算,三处COMMIT响应丢失和真实发送进程退出 |
| SDK、接口文档与实例 | sdk/go为独立module;每项能力随附Markdown契约及可运行示例。文件转换样例目前只受理/取消,实际处理示例为文本规范化与对象任务;P7仍须交付计划要求的真实文件转换例子,不能把受理样例当作文件生成 |
| 数据模型、无外键 | 35个平台实体/289个直接持久化字段维持中文说明,SQL列同步COMMENT;[真实升级](../../internal/storage/mysql/no_foreign_keys_integration_test.go)核对70→0、原数据与323项未替换索引组件保留。后续禁止外键/级联 |
## 2. 全平台故障门槛的证据边界
“平台逻辑已验证”不表示对应场景在任意生产拓扑达标。此表保留原A编号,未由当前证据覆盖的部分不能打勾为完成。
| 门槛 | 当前证据及未覆盖部分 |
| --- | --- |
| A01–A02 | 单项/批量并发幂等已验证;批量、人工恢复、Outbox有真实响应截断后的原身份恢复。首次受理及业务事务COMMIT未知不能更换身份 |
| A03 | 两个逻辑节点的真实MySQL竞争已核对配额/许可;本轮两个真实新进程仅一个拿到重试尝试 |
| A04 | 未开始租约回收及旧证明拒绝有事务回归;尚缺“派发已提交但task.assign尚未到达Worker时强杀节点”的精确进程注入,列入P6,不能用普通节点重启替代 |
| A05 | 真实start/finish确认丢失并先后强杀节点,由其他进程恢复同一尝试/回执,处理器只运行一次 |
| A06 | Worker已写入同步外部标记后强杀,平台保留UNKNOWN/核查且释放许可;幂等声明下有限恢复有事务/SDK证据。真实接入方业务写入的幂等仍需接入验收 |
| A07–A09 | 旧会话/代次、迟到证据、续租/完成/回收竞争、跨节点重连与资源令牌隔离已验证;物理旧进程仍可运行,需要业务资源端防护 |
| A10 | 重复容量、SDK接收缓冲耗尽、有界请求/发送及断线恢复已验证;持续慢消费者和重连风暴负载仍待P6 |
| A11–A12 | 取消竞争和UNKNOWN安全分流已验证;模拟处理器的错误不证明任意外部渠道都满足幂等/核查协议 |
| A13–A14 | 真实MySQL触发竞争、真实服务全停后计划恢复、版本/时区/漏跑已验证;生产大规模集中补偿性能仍待P6 |
| A15 | 结果交付、HTTP/WSS确认丢失、Inbox事务及消费者强杀后去重已验证;保留期清理与真实持久化介质保障仍待P6 |
| A16–A17 | 跨队列资源键和跨命名空间应用额度竞争、当前权限隔离已验证;多节点混合负载下公平性及凭据安全重绑仍待P6 |
| A18 | 受控MySQL COMMIT响应丢失已验证;MySQL停机、复制主节点切换、持久化/复制确认组合尚未验收 |
| A19–A20 | 混合版本滚动升级、清理/归档与重报补投竞争尚未实现完整验收;保留原首版范围,P6必须补齐 |
| W01–W17 | 尚未完成Weave运行引擎。模型和约束测试不能证明流程发布、推进、信号、并行、暂停、恢复或轮询已实现 |
## 3. 后续仍需完成的原范围
1. P4:研发SDK定义与发布、不可变版本、实例、顺序/分支/有限并行汇合、信号与定时等待、同事务创建下一项任务、内部事件持久化接续。
2. P5:有界轮询、独立轮次/尝试预算、暂停门控、继续、取消、人工恢复、新激活隔离及审计;Weave管理任务不能绕过所属流程。
3. P6:上表未完成故障门槛、可轮换凭据和安全重绑、历史清理、完整指标/告警/日志策略、负载工具、单点/复制拓扑、备份恢复与发布运行手册。容量和RPO/RTO需真实拓扑证据。
4. P7:包括实际文件转换在内的完整接入场景、独立SDK远端取包/版本与兼容验证、全部命令/链接/API/示例及首版清单复核。
上述内容没有因Pulse阶段验收而移出首版目标。当前仓库的实现及本地回归不能被描述为已上市产品的生产验收。
## 4. 复现与最新结果
本轮环境、命令、新增测试、完整脚本终态及限制见[延迟与停机恢复报告](phase-3-delay-recovery.md)。全量脚本已确认终态0;历史子阶段报告的“下一步/未实现”描述各自当时状态,当前范围以本表和持续计划为准。