Files
orbit/docs/08-development-plan.md

43 KiB
Raw Blame History

Orbit 持续开发与回归计划

更新:2026-09-24。此计划对应持续开发目标,由开发过程同步维护。数据库已按用户要求采用无外键设计,迁移 000008 移除历史外键,关联一致性由服务端事务保证。

1. 最终交付目标

交付可由多个业务项目接入的 Go + MySQL + HTTP/WebSocket 平台:Pulse 管理任务与调度,Weave 管理持久化流程,业务处理器运行在独立 Worker。研发通过独立 Go SDK 定义和发布流程。

完成标准包括服务端、SDK、迁移及运行工具、Markdown 接口手册、可运行场景示例,以及实际正确性/故障/性能验证记录。完成设计、单机运行或展示一条正常路径,均不等同于完成首版交付。

仓库内的开发回归统一入口为 make release-local-check,它只负责可重复的本地门禁;真实 MySQL 全量回归使用 make integration,目标拓扑生产验收仍按交付清单单独留证。

1.1 当前交付快照(2026-09-21)

当前不是“还剩一半代码”的状态,而是核心平台已经进入生产验收阶段。为避免把代码完成度和上线完成度混在一起,按三层记录:

层级 当前结论 依据
核心功能 P0–P5 已完成阶段验收 真实 MySQL、服务端/SDK、Worker/流程进程故障、恢复与可运行示例回归
发布准备 P6–P7 大部分完成 观测、凭据操作、备份恢复、数据库短暂不可用、GTID 手工提升、容器发布物、协议门禁和独立 SDK 门禁
正式生产 尚未放行 目标拓扑容量、自动故障切换、RPO/RTO、跨标签兼容、生产密钥/告警/值守、保留归档策略仍需目标环境证据

剩余工作按以下顺序推进,任何一项没有对应输出、工单或演练记录,都保持“未验收”,不把本地通过写成生产保证:

  1. 冻结目标环境:确定 MySQL 拓扑、故障域、实例规格、连接/任务/流程峰值、数据保留周期和 RPO/RTO。
  2. 完成目标环境演练:执行容量、慢消费者/重连风暴、数据库自动切换、备份介质恢复和滚动升级,记录 p50/p95/p99、资源曲线和失败分母。
  3. 关闭运维门槛:完成生产密钥托管、最小权限、告警通知、值班响应、回滚/前向修复和审计留存演练。
  4. 关闭发布门槛:使用正式标签跑旧 SDK/新服务端、新 SDK/旧服务端的完整协议矩阵,冻结镜像摘要、迁移账本、版本身份和发布审批。
  5. 评审清理策略:明确幂等、事件、审计、交付和流程历史的保留/归档格式,再决定是否实现任何写入型清理;当前只读盘点不会删除数据。

上述第 1–4 项完成并留证后,才可以给出正式生产容量和高可用结论;第 5 项在策略未批准前不进入自动删除实现。

首个远端接入版本

已按用户要求推送仓库 main 及 v0.1.0 接入版本,独立 SDK 标签为 sdk/go/v0.1.0,供业务项目直接 go get。两个标签固定提交 0e8b2ef2975df6b55f2240dd14eda83adf30ea94;仓库外空模块缓存下载、固定版本、无 replace 编译、HTTP smoke 和校验和验证已通过,见远端发布报告。本机验证沿用系统网络代理及公开 Go 模块代理,保持 sumdb 校验。该交付不关闭上方目标环境及完整跨版本生产验收项。

控制台第一版

已将 Orbit Console 编译进服务端,入口为 /console/。第一版读取健康、版本、任务、计划、流程和结果订阅接口,使用数据库控制台账号和 HttpOnly 会话,响应式总览和有界自动刷新;不直接访问数据库,也不绕过现有凭据与动作范围。首个管理员可以随 orbit-admin bootstrap 同事务创建,独立管理员身份和跨命名空间聚合仍不在控制台内提供。

控制台任务详情已接入 Pulse 的任务快照、执行尝试、操作审计、取消和安全重试接口。页面操作沿用 expected_revision、Idempotency-Key、原因、证据和服务端权限校验;NEEDS_REVIEW 仍要求通过核查 API/SDK 提交最终结论。流程实例详情已接入当前视图、步骤状态和有界事件时间线,并支持带 control_revision 的暂停、恢复和取消;对 NEEDS_REVIEW 实例进一步提供六类带证据的恢复入口(任务核查、步骤结论、继续、步骤重试、PENDING 接续、等待重建),页面只组装协议请求,当前修订、激活身份、权限、审计和状态门控由服务端负责。结果订阅详情已接入配置、积压窗口和交付历史,并支持启停及 EXPIRED 交付追加预算重试。权限不足时保留明确提示,不把页面操作视为绕过服务端事务边界的快捷入口。

定时计划详情已接入当前版本、规则、下一次触发和 occurrence 历史;暂停/恢复沿用 schedules:manage、expected_revision、原因和幂等键。计划发布、跨命名空间管理身份和更高风险的交付控制仍按独立权限模型推进。

控制台六个核心模块已拆为独立 hash 视图,导航状态和页面标题随视图同步,刷新或直接打开对应 hash 后仍保持正确模块。数据请求继续由统一会话和当前命名空间范围驱动。

已完成一次真实链路回归:标准 scripts/test-mysql.sh 在一次性 MySQL 和真实 Orbit 进程中跑通任务、Worker、结果订阅、Weave 流程、进程恢复及独立业务示例;控制台前五个入口、健康检查和详情所依赖的读取 API 已用真实结果核对;第六个保留策略入口另有真实 MySQL、首次部署 HTTP 与浏览器操作回归,证据见 Console 真实链路回归。这关闭了本地闭环验证项,生产拓扑和发布门槛仍保持未验收。

新增 make console-e2e 作为首次部署闭环门禁:在一次性 MySQL 和 Docker Orbit 中从空库迁移、初始化控制台管理员,完成登录、受保护页面、WS Worker 成功执行、明确失败重试、定时任务、控制台任务读取和登出后的 401 校验,证据见首次部署与控制台任务闭环。该门禁证明功能链路可重复,不替代目标生产拓扑、容量和 RPO/RTO 验收。

新增 deploy/docker-compose.yml 作为单节点可部署基线:MySQL 健康检查通过后依次执行迁移和 orbit-admin verify,核验成功才启动 Orbit;make compose-check 提供不泄露密码的静态配置门禁,首次管理员初始化和域名/同源访问说明见Compose 部署基线,实际正常启动与失败阻断证据见Compose 部署基线验证。该基线不替代生产数据库高可用、正式 Secret、容量、备份和 RPO/RTO 验收。

新增 deploy/nginx/orbit.conf.example 作为可选 HTTPS/WSS 入口模板:Compose 默认只将业务端口绑定到 127.0.0.1,Nginx 负责 TLS 终止、WebSocket 升级、健康探针代理和控制台登录来源限速;配置语法及端口边界证据见HTTPS/WSS 入口基线验证。Nginx 是部署入口,不会成为 Orbit 服务端的业务依赖,真实域名、正式证书、入口故障和公网重连仍需目标环境验收。

新增 deploy/docker-compose.ha.yml 作为两节点隔离验收覆盖:节点共享持久化 MySQL 状态但使用独立 HTTP 端口,base 服务中的单节点 Orbit 通过 profile 关闭;两个 ready 节点均通过后才能接入入口,滚动停止和重新拉起按Compose 部署基线执行。该覆盖不替代跨故障域节点、数据库自动切换、负载均衡器和目标容量验收。

两节点覆盖已完成一次真实 Docker 回归:空库迁移和权限核验后两个节点均就绪,停止 A 后 B 保持就绪,A 重新拉起并重新核验后恢复;证据见两节点 Compose 覆盖验证。该结果只关闭单机双进程启动/滚动动作,不关闭生产 HA。

2. 持续推进方式

每个阶段按以下顺序推进:

  1. 根据已确认功能细化状态、协议、数据及完成标准。
  2. 完成一条可执行的业务无关调用链,同步 SDK 和文档。
  3. 运行单元、真实数据库、协议及端到端回归,记录失败与修复。
  4. 验证该阶段异常路径、兼容性、授权边界与可恢复性。
  5. 更新本计划、接口实现状态、示例和验证报告,再进入下一阶段。

常规技术选择和缺陷修复自主进行。只有确实缺少外部信息或涉及未获授权的操作时才请求用户介入。不能为了让目标显示完成而隐藏未实现项或跳过故障验收。

3. 阶段清单

阶段 开发内容 回归与完成标准 当前状态
P0 基础与数据模型 Go workspace、独立 SDK module、公共/Pulse/Weave 模型、MySQL 迁移、配置、健康检查 编译/竞态/静态检查;真实 MySQL 建表、隔离、唯一性、预算、不可变版本、迁移失败防护;SDK 健康调用 已完成并通过阶段回归(见 P0 报告)
P1 任务受理闭环 应用凭据与作用域权限、队列、幂等提交、查询、待执行取消、受理事件;SDK 客户端 API/SDK 创建查询闭环;重复键与内容冲突、响应未确认重报、跨命名空间拒绝、参数边界 已完成并通过阶段回归(见 P1 报告;真实断路/提交 ACK 丢失注入留后续故障阶段)
P2 Worker 执行闭环 WSS 接入、能力/容量、领取与开始、租约、续租、结果确认、排空与恢复;Worker SDK 真 Worker 执行;失联/重连/重复确认/旧尝试拒绝;业务效果未知转核查;节点故障接管 已完成并通过阶段回归:服务端、自动 SDK、历史查询、完整 Schema 与真实进程强杀恢复;测试拓扑和剩余生产故障矩阵见 P2 验收报告
P3 Pulse 完整能力 安全重试、延时、Cron/固定间隔、漏跑策略、计划版本、运行中取消、并发许可、配额/背压、可靠结果订阅、批量受理、独立任务核查/人工重试、查询筛选与事务Outbox接入 多实例领取/触发竞争、重试上限、取消竞争、队列隔离、积压恢复、事件重复交付 已完成平台功能阶段验收:原范围逐项核对、本轮完整回归。补齐相对延迟、改参数关联示例和四种重试全停恢复场景;20个可运行示例全部通过。全平台生产门槛及SDK首版交付剩余项仍按P6–P7推进
P4 Weave 主流程 SDK 定义构建与发布校验、实例、顺序/分支/结构化并行汇合、信号/定时等待、版本绑定 重启接续、早到/重复信号、并行竞争、内部事件重放、发布版本兼容;端到端通用流程 已完成平台功能阶段验收:原功能及W01–W17逐项核对、版本/暂停/全停回归、提交故障边界。研发发布、固定版本、顺序/分支/有限并行、信号/时间等待、公共API/SDK及可运行示例均已交付;生产拓扑与发布兼容继续P6/P7
P5 Weave 恢复与查询 有界查询、暂停继续、取消、人工核查恢复、控制门控与审计 轮次与尝试独立预算;暂停/开始/回执/超时竞争;恢复保留预算;未知结果不盲目重复 已完成平台功能阶段验收:原功能核对。有界查询、独立预算、暂停继续/取消、六类恢复、历史/筛选/事件/来源与SDK场景均已交付;真实竞争、COMMIT断线及进程全停保留原身份、截止和预算。运维、容量与首版发布继续P6/P7
P6 生产验证与运维 完整监控、凭据轮换、备份恢复、滚动升级、运行手册、可复现负载和故障工具 对照生产验收清单执行,报告环境/指标/遗留项;容量、RPO/RTO 按真实拓扑验证 进行中;已补精确故障边界、进程观测、数据库短暂不可用、备份恢复、GTID 手工提升和定时积压样本;继续业务积压/阶段延迟、凭据轮换及其余生产门槛
P7 首版交付核对 SDK 兼容与发布准备、完整 API 手册、场景示例、全量回归及交付清单 新接入者按文档跑通全部示例;所有首版能力可追溯到实现与测试;报告实际生产边界 进行中;已补通用文件转换示例、SDK独立发布门禁、当前协议兼容矩阵、历史任务 API 双向演练、当前回归状态、四项闭环验收、首版交付核对清单、发布物身份清单和容器发布说明,镜像已完成 linux/amd64 构建验证,节点版本身份可由 /version 核对;verify --manifest 已可在数据库核验前绑定候选二进制身份;仍需带标签的完整跨版本矩阵和目标拓扑验收

SDK、文档与示例随 P1–P5 同步开发,P7 是全量核对,不是最后才开始补文档。

P4/P5定时等待与后续查询轮次的实现及回归记录见时钟报告。外部信号与最终查询竞争见信号报告。公共实例、控制、信号、六类恢复和操作审计已接入HTTP与独立SDK,见公共接入报告。流程任务来源及历史查询已接入,实例筛选分页已接入,状态事件时间线已接入,独立轮询/恢复示例已接入,功能验收与生产边界见P4/P5核对。

P4/P5 已交付功能核对

  1. 已实现FAIL_AFTER_SETTLED与显式取消的内部分支结清,见控制报告:持久取消意图、复用Pulse取消、收集已发出查询/任务结果、等待全部已激活工作结清后才进入失败或取消终态。效果未知仍保留核查。
  2. 已实现实例暂停/继续/取消内部操作,以control_revision、操作幂等身份、明确原因及审计保护控制决定;暂停不延长原截止,继续不覆盖核查或取消状态。
  3. 已实现内部执行核查、步骤结论、解除核查及TASK新激活和旧激活隔离,见核查报告。POLL跨激活恢复已实现(见查询恢复);核查后PENDING接续和独立等待重建也已接入内部服务,保留原预算、轮次、结果和证据。
  4. 实例/当前步骤/信号/控制/六类恢复及流程操作审计HTTP和独立SDK已接入,步骤查询返回实际激活代次;并行执行与信号回执场景已有可运行示例。激活/轮次/信号历史及信号资源审计已接入;实例筛选分页已接入;状态事件时间线已接入;独立轮询及恢复示例已接入,已补W06/W09/W14/W15专项回归;Pulse任务流程来源已交付。逐项验证原键恢复、权限、版本冲突、竞争与进程全停。
  5. 转入P6/P7的生产故障、容量、运维、发布与全部文档核对。内部存储阶段通过不会提前勾选公共接口或生产验收。

公共接入按以下调用链推进;本批已接入启动/当前详情、控制、信号、六类恢复和流程操作审计,并提供独立SDK及基础示例。任务流程来源和有界历史查询也已接入。实例分页和独立查询示例已接入;状态事件时间线已接入;P4/P5功能阶段已按逐项核对验收;剩余生产门槛继续P6/P7:

调用链 已交付内容 验收重点
启动与读取 显式固定版本启动、当前实例、步骤及当前激活代次;已补有界历史读取及实例筛选分页 原键丢回执恢复、当前权限、读取快照一致性、未激活步骤语义
控制与信号 暂停/继续/取消、固定步骤和代次的信号提交及原受理回执 control_revision与通用revision区分、迟到/旧代次、暂停期间结果收集
核查与追踪 六类恢复、激活/轮次/等待/信号历史读取及信号管理审计已接入;状态事件时间线已接入;Pulse任务流程来源已交付 当前实例/步骤/任务版本、证据和显式声明、旧历史保留、有界响应和权限隔离
通用接入场景 并行汇合、外部回执、有限轮询、暂停核查恢复的可运行SDK示例 真实Worker执行、完整进程退出后接续、未知效果保留、全链路回归

接口只使用已经落地的内部事务规则;SDK保持独立module,不能引用服务端模型或数据库实现。生产故障及容量结论仍由P6专门验收。

P6 首批实施顺序

  1. 已补首批可复现故障工具:A04“派发已提交但消息尚未送达”、W01/W13事务提交结果不明,以及W16最终回执/旧PENDING结果重放/下一轮竞争。迁移器同时提供当前版本无外键新装基线;每个切点必须有实际数据库或进程证据,不能用响应错误推断事务是否已提交,也不能用普通SIGNAL竞争替代最终查询场景。数据库事务封装另对提交前 MySQL 1205/1213 做最多两次短退避重试,Commit 回执不明保持原身份核对语义,真实锁环回归见P7当前回归状态。
  2. 已实现基础运行观测及有界业务状态与事件采样:HTTP/WS、数据库连接池、后台批次、固定任务/交付/流程/Inbox状态计数、最近事件类别、终态耗时样本、固定事件阶段耗时、最早年龄、截断/新鲜度指标、提交前 MySQL 事务重试/耗尽计数和可离线验证的告警规则;独立采集监听默认关闭,固定指标目录拒绝动态标签;发布前只读结构核验由orbit-admin verify提供,运维人员也可用 orbit-admin observe snapshot 获取同一有界单节点快照;后台循环间隔、批量上限、Worker/Event连接上限、Hub领取协程和有界内存排队均支持有界环境配置,并在启动日志和固定指标中记录。跨节点重连风暴、慢消费者、真实锁等待/死锁、磁盘增长已经加入定向回归入口;目标拓扑的全局持久吞吐、锁等待/死锁告警阈值和生产采集/通知验证仍需环境验收。
  3. 已补齐受保护管理环境中的固定凭据操作文件、轮换、撤销、提交不明故障切点、幂等回执和脱敏管理审计;轮换保留授权绑定并要求新令牌重新建立会话,旧 Worker 会话被排空且立即过期,撤销允许在停用范围内执行且不改写历史记录。已用一次性 MySQL 定向验证旧令牌失效、新令牌重绑和零外键;仍需多节点安全重绑演练、凭据最小权限配置核对和生产密钥托管/审计演练。
  4. 已补数据库保留策略、预览和只读归档导出以及orbit-admin retention inventory只读盘点。策略按命名空间存入 MySQL,控制台单管理员可修改,版本、原因和前后快照进入审计;默认关闭归档,源数据不会因配置变化自动删除。固定候选目录保护有效幂等身份、未确认交付、未知效果、未终结流程和未处理 Inbox;导出包带冻结策略版本和 SHA-256;控制台支持连续批次、累计数量、摘要校验和本批重下载,真实 MySQL 回归核对同时间戳分页、保护对象、版本及权限边界。已补持久文件归档作业:自动有限分批、原目录续跑、原子发布、容量限制、摘要链、离线核验及真实强杀恢复;尚未接入周期调度、控制台作业列表或跨节点自动接管。仍需在目标环境评审最终归档介质、备份恢复、删除执行器和保留周期,再执行兼容升级和容量负载。生产HA及RPO/RTO继续按实际拓扑验证,不缩减为本机多进程检查。
  5. 已补orbit-load有界受理负载工具及24次/1000次隔离样本,见受理报告。新增独立orbit-exec-load,通过真实Worker、任务结果和尝试历史核对,提供短/混合/中长任务的受理、排队、授权执行及完成耗时分布;具体环境、原始JSON和失败分母见执行测量报告。新增orbit-workflow-load,用本次发布版本的双分支并行流程,逐个核对不同任务、唯一尝试、来源、精确输出与本地调用;24/100实例及24实例截止负例已重新构建回归并绑定源码/二进制哈希,见流程测量报告。新增orbit-schedule-load,已完成24/128次定时集中触发与24次计划量的截止负例,保存实际分母、唯一任务/尝试、来源与暂停收尾证据,见定时测量报告。Go 1.27.1 模块级门禁、MySQL 存储集成、关键 SDK/Orbit 进程故障组、24个可运行 SDK 示例真实服务串跑和 result-inbox/task-outbox 真实业务集成已复跑通过。已补长期积压与资源曲线样本:32×8 共256个触发点,在1个Worker/容量1和180秒截止下保留173个成功、83个未核验任务,并以独立数据库读取记录等待积压曲线;该单节点样本不替代目标拓扑容量。SDK受控重连风暴及真实慢消费者背压已补边界回归,积压脚本已加入 CPU/RSS、MySQL 资源、连接池等待、业务快照和事务重试计数采样;已补跨节点重连、慢消费者与有界磁盘增长样本(见 P1 定向报告);长期磁盘曲线与目标数据库拓扑容量继续按实际负载验收。
  6. 已补隔离备份恢复演练:源库和恢复库均为一次性 MySQL 容器,Go 1.27.1 构建的当前二进制在逻辑备份恢复后核对迁移账本、核心记录数量、固定索引和零外键;证据见恢复报告。该演练不替代生产备份介质、复制切换、跨版本恢复或 RPO/RTO 验收。
  7. 已补A18 数据库短暂不可用恢复演练:Go 1.27.1 构建的当前二进制在数据库停止期间返回 readiness 503,同卷恢复后返回 200,并用原权限范围继续受理任务;证据见数据库恢复报告。该演练不替代主从切换、复制确认、跨故障域或 RPO/RTO 验收。
  8. 已补MySQL GTID 复制与手工提升演练:隔离源库/副本通过真实 Orbit HTTP 受理任务,源库停止后副本提升、结构核验和原幂等键重放通过;自动故障切换、复制延迟上限、目标拓扑及 RPO/RTO 仍待验收。

P3 功能范围核对

可靠订阅链路完成后,重新对照 原功能范围 和 事务衔接设计,以下原定首版能力已按核对结果补齐;进一步发现的相对延迟与改参数关联示例也已交付。P3验收逐项保留实现证据及尚待P4–P7完成的原范围,不按已有模块反推全平台完成。

核对项 当前证据与后续交付
相对延迟与退避全停恢复 已实现delay_ms、数据库计时与原回执恢复,调用示例和回归记录同步;四种真实进程场景保持原退避、预算、截止与未知效果
改参数形成关联新任务 查询示例以新提交身份和相同business_key创建不同参数任务,逐项读取确认旧输入保留;不自动取消原任务,也不冒充人工retry_of
批量任务受理 已实现批量API、独立SDK及补交示例;真实MySQL部分失败与HTTP响应丢失用例已通过,同键并发20轮及全量回归已通过,见报告
独立任务人工核查与重试 已实现管理API及SDK、专门权限、显式安全声明、证据/版本/审计和关联新任务;完整场景及回归报告同步交付
任务查询筛选 已实现业务键及创建时间查询,v2游标绑定全部筛选、旧游标受限兼容、四种索引路径与完整场景;回归报告同步记录
任务详情来源追踪 已实现独立来源接口、SDK和普通/计划/人工恢复场景,返回计划及触发固定版本;同命名空间归属、当前权限和来源缺失拒绝已通过全量回归,流程来源已按专项报告接入
业务到平台的事务Outbox接入 已实现独立业务模块及完整接入,覆盖业务变更/待发请求同事务、有限发送恢复、CLI及真实HTTP/MySQL/进程故障,见报告;核心SDK保持无ORM/数据库依赖

A04派发已提交而消息尚未到达Worker的精确进程故障已通过专项回归。慢消费者/重连风暴、多节点凭据安全重绑、历史清理、全量监控/容量与MySQL故障切换继续按P6执行;Weave通用执行门控/内部事件接续已实现,不将外部结果订阅当作内部流程引擎。

P3 事务Outbox接入的验收范围

以下内容已由独立业务示例实现并进入回归,实际证据见Outbox报告。P3整体范围已另行逐项核对,下表保留该子项的验收要求:

  1. 独立业务示例module,以业务记录和待发请求同一个MySQL事务提交;核心SDK保持无ORM/数据库依赖,业务表示例也禁止外键,字段提供中文注释。
  2. 同时冻结目标命名空间/队列、原幂等键、完整请求及内容摘要。相同业务操作重报不新建待发项,内容不同必须冲突;凭据原文不能进入Outbox或日志。
  3. 提交、领取与确认分别使用短事务;HTTP在事务外执行。多发送进程通过数据库租约及递增代次协调,旧代次不能覆盖新结果;重启后继续读取持久化待发项。
  4. 平台已受理但响应丢失、业务COMMIT回执未知、发送进程退出,都必须用原身份核对。只确认平台受理,不将受理标记当作业务执行成功。
  5. 退避、发送次数及总发送期限均有上限,补发窗口不超过平台幂等保留期;权限、内容冲突、预算耗尽和不能可靠确认的响应需保留可核查记录,不生成新键绕过。
  6. 真实数据库回归覆盖业务回滚、并发重复、发送竞争、过期租约、迟到确认和原始数字精度;真实HTTP丢响应、MySQL COMMIT响应丢失和发送进程SIGKILL后恢复一并验收。
  7. 提供完整初始化、提交、运行/恢复、状态核对及失败处理命令;接入全量回归,记录实际测试证据,并纳入P3范围核对。

4. SDK 与示例交付清单

场景 预期调用链 所属阶段
健康检查 创建客户端 → 存活/就绪查询 P0
文件转换任务 提交幂等任务 → Worker实际转换 → 查询结果 已补通用CSV→JSON Worker示例;大文件对象引用、外部效果核查与生产容量仍按接入方和P6/P7验收
相对延迟执行 受理时按数据库时间等待 → Worker实际执行 → 历史时间核对 → 原键重报不重计时 P3,已实现完整示例
有限安全重试 明确失败 → 持久化退避 → 新尝试 → 查询完整历史 P3,已实现完整示例
定期数据同步 发布计划 → 触发任务 → 暂停/恢复 → 查看触发记录 P3,已实现通用快照示例
运行中取消 保存取消意图 → 停止处理器 → 确认结果 → 查询并排空 P3,已实现完整示例
队列限速与背压 暂停 → 满额拒绝 → 原回执核对 → 释放空间 → 限速执行 P3,已实现完整示例
跨命名空间应用配额 first 受理 → second 全局满额 → 释放 → 原键成功 → 恢复配置 P3,已实现完整示例
跨队列共享资源 两队列同键 → 一个有效许可 → 递增序号 → 资源端拒绝旧写入 P3,已实现完整示例
优先级与应用隔离 近同时到期按优先级 → 旧任务等待补偿 → 应用/队列轮转 P3,已实现完整示例
可靠结果订阅 冻结结果 → 持久化交付 → Inbox 去重 → 确认/补发 → 耗尽后人工重试 P3,核心、HTTP/WSS、管理及消费 SDK、独立Inbox示例与真实进程故障回归已完成
批量文件作业受理 逐项身份 → 部分结果 → 同键核对 → 释放额度 → 只补交失败项 P3,已实现完整示例
业务事务Outbox 业务记录/请求同事务 → 原键发送 → 受理/业务关联同事务 → 故障恢复 P3,已实现独立模块与完整示例
业务操作定位 精确业务键 → 创建区间 → 游标分页 → 查询详情 P3,已实现完整示例
独立任务人工恢复 未知结果 → 证据核查 → 保留原任务 → 关联新任务 → 审计查询 P3,已实现完整示例
研发定义发布 六类节点描述 → 校验/发布 → 原键确认 → 新版本 → 读取旧版本 P4定义子项,已实现示例
并行生成结果 发布流程 → 并行执行 → 汇合 → 完成 P4,已实现示例
审核与外部回执 提交流程 → 等待信号 → 授权信号注入 → 继续 P4,已实现模拟外部回执示例;实际外部系统由接入方对接
外部作业轮询 提交一次 → 有界查询处理中状态 → 回执或最终结果 → 超限核查 P5,已实现轮询与耗尽示例
暂停与人工恢复 暂停 → 保存结果 → 核查/恢复 → 查看审计 P5,已实现断线后的核查与暂停恢复示例
故障恢复 节点/连接中断 → 相同身份核对 → 恢复或人工核查 P2–P6
执行历史核对 读取尝试 → 查看冲突/迟到证据 → 对照权威结果 P2,已实现完整示例

每个正式示例需要:前置配置、完整可运行源码、启动命令、输入、预期输出、失败路径、幂等/清理说明。SDK API 尚未实现时,文档只能标为规划,不能给出伪装可运行的代码。

5. 回归规则

  • 每次模型或迁移变化:执行真实 MySQL 集成测试,验证外键为 0、服务端关联归属、唯一约束与升级数据保留。
  • 每次状态或协议变化:更新服务端、SDK、兼容说明与异常场景。
  • 每次执行/恢复变化:增加对应断线、超时、重复、迟到、宕机或竞争用例。
  • 每次发布候选:全量回归、示例回归、迁移检查、故障和负载报告。
  • 验证失败先修复再推进,未执行的项目明确记为未验证。

6. 性能与高可用验收边界

不直接用租户总数作为容量结论。P6 先固定硬件、数据库拓扑、消息大小、任务时长、连接数、峰值与积压模型,再记录受理/派发/推进/恢复的吞吐、延迟和资源消耗。

本地多实例与故障注入可以验证恢复逻辑;实际生产复制确认、跨故障域部署、备份介质、RPO/RTO 及峰值余量,需要在对应部署环境复测。所有报告分别标注已验证、未验证和当前限制。

7. 文档入口

状态事件时间线子项

已接入流程/步骤/信号状态事件的公共HTTP、独立SDK、原元数据详情与完整运行例子。000025仅派生索引,历史原字段保持;新增信号转换与状态同事务,批量失败整体回滚。当前阶段验证见时间线报告,P4/P5原功能范围及独立POLL/人工恢复示例已验收,提交故障及竞争证据见专项报告,P6/P7仍未完成。

P4/P5 阶段结论与下一批

逐项证据与生产边界已落表,P4/P5平台功能阶段验收通过。W06/W09/W14/W15真实竞争和全停、A04未送达、W01/W13提交断线及W16旧结果重放竞争均有对应回归,不重复列为待开发。运行指标、凭据轮换、保留策略及只读归档、隔离容量样本和备份恢复均已按上方 P6 留有验证记录;后续重点是归档介质与删除执行器、长期磁盘增长、目标生产拓扑的容量/数据库故障及 RPO/RTO 验收。P7 负责剩余场景和版本发布。完整首版目标保持进行中。

周期归档与控制台作业(本批)

  • 已实现:000031 无外键计划/作业模型及中文注释;按类别配置周期与预算;数据库时间合并错过周期;固定版本/卷身份;有界领取、过期接管与迟到隔离;连续文件链和数据库前缀核验;单作业及全卷预算;单管理员页面、分页、失败重试/关闭、幂等与审计。
  • 已验证:真实 MySQL 多节点竞争、落盘后确认丢失、文件损坏、策略变化、预算提高与卷预算、分页;标准测试、容器端到端、页面实际操作与全量集成回归均已通过。
  • 不计入本批完成项:源数据删除、跨作业增量去重、对象存储、任意网络文件系统语义及目标生产跨故障域验收。
  • 接口/部署/恢复示例与验证记录。

可复用 Outbox 与 HTTP 服务生命周期(本批已完成)

  • 已交付独立 MySQL 适配模块,支持调用方 EnqueueTx、受理确认钩子和有界 Run;旧 CLI 改用公共包,原有表结构及命令兼容。
  • 已交付完整 HTTP 宿主:业务接口、发送器、Worker、持久 Inbox、健康检查、后台错误传播、有界关闭和数据库最后释放。
  • 已通过:标准竞态测试、vet/build、SDK隔离和文档链接;定向真实MySQL/平台回归与平台全量 integration 均退出0。包括事务回滚/重复/旧快照、确认回滚、提交回执丢失、强杀恢复和SIGTERM收尾。
  • 公共包接口、完整调用和故障示例、验收报告。本批不扩展到其他数据库/ORM、流程命令Outbox或源数据删除。

main、正式版本与统一示例(本批已完成)

  • 根 examples 统一 27 个可运行场景,各目录 README 说明用途、权限、运行和结果;首页改为完整功能与接入入口。
  • 开发工作区、构建、MySQL/控制台/历史 SDK 回归同步迁移路径;SDK 保持独立模块。
  • 使用 main 与 v0.1.1 / sdk/go/v0.1.1 / adapters/outbox/mysql/v0.1.1 交付,旧标签不变;业务固定版本,无需开发分支或提交号。
  • 标准 7 模块回归、SDK/协议/文档门禁、真实 MySQL 全量、控制台端到端及历史任务 API 双向 smoke 均通过;main 与三组 v0.1.1 标签已推送,仓库外空缓存安装两个模块、构建、HTTP smoke 及校验和验证通过,无 replace;证据见发布记录。

本地 Compose 联调环境(2026-09-27)

  • 已提供 scripts/orbit-local.py 和本地 Compose 覆盖文件,部署在独立项目 orbit-test,主机端口 18080;MySQL/归档卷持久保存,迁移账号与运行账号分离。
  • 初始化单管理员、完整测试身份和 host.env/docker.env,私密内容位于被 Git 与 Docker 构建排除的 .local/compose-test;重复启动复用原身份,不重置密码或数据。
  • 提供 orbit-test-services 共享网络与 http://orbit-test:8080 地址,固定可配置子网,解决本机默认 Docker 地址池耗尽的问题。
  • 已验证:真实容器构建/迁移/零外键/权限收紧;浏览器登录协议和未登录跳转;另一容器运行 Worker 完成三项任务及事件 ACK 重报;定时/流程示例;重复部署与 Orbit/MySQL 停止再启动后原任务、身份保持。
  • 接入、账号位置、启动/停止及网络声明见本地部署手册。这是本地联调环境,不改变平台或 SDK 协议。

单管理员应用接入(2026-09-27)

  • 新增独立应用接入页:应用/环境分页、队列及凭据详情、选择业务能力新建应用、重新生成 Token、复制/下载 SDK 配置;沿用单管理员,不引入角色系统。
  • 新增 Cookie 专用管理接口,部署显式指定唯一登录名;同事务校验管理员与有效会话,写入要求同源与专用请求头。Token 只在生成时交付,数据库只存摘要。
  • 新建资源/审计/幂等回执同事务,轮换复用现有凭据 ID 与轮换核心。请求不明保留原操作,原样重报;原有任务、订阅和交付身份不变。无新表、无外键、无 SDK 协议修改。
  • 已通过定向 MySQL 并发创建、幂等冲突、重名回滚、轮换/旧 Token 拒绝、退出失效与审计脱敏;真实 HTTP 已验证创建、轮换后原任务和订阅可读。标准/全量集成和页面验收记录见本批报告。
  • 页面使用、HTTP 接口及故障恢复。

长期凭据与平滑换证(2026-09-27)

  • 新建应用和 bootstrap 默认长期 Token,可选定期;既有 Token 可通过管理端/CLI 原地调整有效期,无需改业务配置。
  • 000032 与基线增加旧摘要/固定截止,无外键。控制台/CLI 默认 7 天过渡;同一身份的 API、WS 控制命令和跨节点重连均核验两代有效性,权限与任务归属保持不变。
  • 结束过渡、两代同时撤销、过渡期防重复换证、旧 v1 固定操作兼容、幂等审计及中文模型注释随功能交付。
  • 验证结果见长期凭据与平滑换证。SDK 无接口修改;调用方须在截止前滚动更新配置并收尾在途执行。

控制台应用范围与列表归属(2026-09-27)

  • 已实现:页顶应用/环境与队列筛选、列表和详情应用标签、URL 保持筛选;切换隔离旧请求和表单,错误范围不降级读取默认数据。
  • 单管理员通过 Cookie 显式选择范围;业务事务重新核验会话与目标应用,SDK 不支持范围覆盖,订阅原凭据绑定不变。
  • 同步提供范围接口、真实 MySQL 授权/审计/退出后拒绝测试和 HTTP 列表及订阅管理回归。最终结果见本批报告。

换证过渡状态提示(2026-09-27)

  • 凭据卡片明确区分过渡中与已撤销状态,展示旧 Token 实际截止及服务切换步骤;入口可点击「查看原因」打开只读说明,到期后页面刷新恢复换证入口。
  • 单独说明当前 Token 的获取位置、凭据 ID 与 Token 的区别、过渡期配置可能仍是旧代,以及未保存时的处理方式;新建/换证前、成功交付与关闭确认均提示原文只显示一次。
  • 保留过渡期禁止重复换证的保护;提前结束仍需管理员确认服务全部切换、在途任务收尾,不自动结束过渡或替换现有凭据。
  • 回归范围:标准竞态测试、vet/build、JavaScript 语法和文档链接;本地页面核对过渡原因可点击、凭据获取说明、正常换证入口与结束过渡确认弹窗。说明同步到应用接入手册。