65 lines
10 KiB
Markdown
65 lines
10 KiB
Markdown
# 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,旧输入保持;[查询示例](../../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;历史子阶段报告的“下一步/未实现”描述各自当时状态,当前范围以本表和持续计划为准。
|