From ff843b99658d443558da3634a3673e16686c721e Mon Sep 17 00:00:00 2001 From: k2safe Date: Sun, 20 Sep 2026 14:29:19 +0800 Subject: [PATCH] docs: record persistent backlog measurement --- docs/08-development-plan.md | 2 +- docs/api/schedule-load.md | 2 + docs/reports/data/phase-6-backlog/curve.json | 799 ++++++++++++++++++ .../data/phase-6-backlog/database.json | 7 + .../data/phase-6-backlog/environment.json | 48 ++ .../phase-6-backlog/sample-256-deadline.json | 621 ++++++++++++++ docs/reports/phase-6-backlog.md | 57 ++ docs/reports/phase-7-regression-status.md | 2 +- 8 files changed, 1536 insertions(+), 2 deletions(-) create mode 100644 docs/reports/data/phase-6-backlog/curve.json create mode 100644 docs/reports/data/phase-6-backlog/database.json create mode 100644 docs/reports/data/phase-6-backlog/environment.json create mode 100644 docs/reports/data/phase-6-backlog/sample-256-deadline.json create mode 100644 docs/reports/phase-6-backlog.md diff --git a/docs/08-development-plan.md b/docs/08-development-plan.md index 072888b..10f4061 100644 --- a/docs/08-development-plan.md +++ b/docs/08-development-plan.md @@ -62,7 +62,7 @@ P4/P5定时等待与后续查询轮次的实现及回归记录见[时钟报告]( 2. 已实现[基础运行观测](api/observability.md)及[有界业务状态与事件采样](reports/phase-6-business-observability.md):HTTP/WS、数据库连接池、后台批次、固定任务/交付/流程/Inbox状态计数、最近事件类别、终态耗时样本、固定事件阶段耗时、最早年龄、截断/新鲜度指标和可离线验证的告警规则;独立采集监听默认关闭,固定指标目录拒绝动态标签;发布前只读结构核验由[`orbit-admin verify`](api/operations.md)提供,运维人员也可用 `orbit-admin observe snapshot` 获取同一有界单节点快照。仍需端到端外部效果延迟、全局持久吞吐、Inbox从事件产生到推进完成的精确阶段延迟、全局发送队列、多节点聚合及生产采集/通知验证。 3. 已补齐受保护管理环境中的固定凭据操作文件、轮换、撤销、幂等回执和脱敏管理审计;轮换保留授权绑定并要求新令牌重新建立会话,旧 Worker 会话被排空且立即过期,撤销允许在停用范围内执行且不改写历史记录。已用一次性 MySQL 定向验证旧令牌失效、新令牌重绑和零外键;仍需补齐提交不明故障切点、多节点安全重绑演练、凭据最小权限配置核对和生产密钥托管/审计演练。 4. 已补[`orbit-admin retention inventory`](api/retention.md)只读盘点和[阶段报告](reports/phase-6-retention-inventory.md),能区分过期幂等、确定终态、未知效果、未终结流程、已确认/未确认交付、已消费/未消费Inbox、事件和审计规模;它不执行归档或删除。后续仍需评审各类保留周期、归档格式、受保护记录核对,再执行备份恢复、兼容升级和六类容量负载。未确认交付、有效幂等身份、当前/历史执行证据和未终结流程不能被普通清理破坏。生产HA及RPO/RTO继续按实际拓扑验证,不缩减为本机多进程检查。 -5. 已补[`orbit-load`](api/load.md)有界受理负载工具及24次/1000次隔离样本,见[受理报告](reports/phase-6-load.md)。新增独立[`orbit-exec-load`](api/execution-load.md),通过真实Worker、任务结果和尝试历史核对,提供短/混合/中长任务的受理、排队、授权执行及完成耗时分布;具体环境、原始JSON和失败分母见[执行测量报告](reports/phase-6-execution-load.md)。新增[`orbit-workflow-load`](api/workflow-load.md),用本次发布版本的双分支并行流程,逐个核对不同任务、唯一尝试、来源、精确输出与本地调用;24/100实例及24实例截止负例已重新构建回归并绑定源码/二进制哈希,见[流程测量报告](reports/phase-6-workflow-load.md)。新增[`orbit-schedule-load`](api/schedule-load.md),已完成24/128次定时集中触发与24次计划量的截止负例,保存实际分母、唯一任务/尝试、来源与暂停收尾证据,见[定时测量报告](reports/phase-6-schedule-load.md)。标准Go 1.27.1全量仍待复跑,下一步补长期积压和资源曲线;目标数据库拓扑容量仍单独验收。 +5. 已补[`orbit-load`](api/load.md)有界受理负载工具及24次/1000次隔离样本,见[受理报告](reports/phase-6-load.md)。新增独立[`orbit-exec-load`](api/execution-load.md),通过真实Worker、任务结果和尝试历史核对,提供短/混合/中长任务的受理、排队、授权执行及完成耗时分布;具体环境、原始JSON和失败分母见[执行测量报告](reports/phase-6-execution-load.md)。新增[`orbit-workflow-load`](api/workflow-load.md),用本次发布版本的双分支并行流程,逐个核对不同任务、唯一尝试、来源、精确输出与本地调用;24/100实例及24实例截止负例已重新构建回归并绑定源码/二进制哈希,见[流程测量报告](reports/phase-6-workflow-load.md)。新增[`orbit-schedule-load`](api/schedule-load.md),已完成24/128次定时集中触发与24次计划量的截止负例,保存实际分母、唯一任务/尝试、来源与暂停收尾证据,见[定时测量报告](reports/phase-6-schedule-load.md)。标准Go 1.27.1全量仍待复跑,已补[长期积压与资源曲线样本](reports/phase-6-backlog.md):32×8 共256个触发点,在1个Worker/容量1和180秒截止下保留173个成功、83个未核验任务,并以独立数据库读取记录等待积压曲线;该单节点样本不替代目标拓扑容量。下一步补指标采集对照、长期存储增长、慢消费者/重连风暴和目标数据库拓扑容量。 6. 已补[隔离备份恢复演练](api/backup-restore.md):源库和恢复库均为一次性 MySQL 容器,逻辑备份恢复后核对迁移账本、核心记录数量、固定索引和零外键;证据见[恢复报告](reports/phase-6-backup-restore.md)。该演练不替代生产备份介质、复制切换、跨版本恢复或 RPO/RTO 验收。 7. 已补[A18 数据库短暂不可用恢复演练](api/db-recovery.md):readiness 在数据库停止期间返回 503,同卷恢复后返回 200,并用原权限范围继续受理任务;证据见[数据库恢复报告](reports/phase-6-db-recovery.md)。该演练不替代主从切换、复制确认、跨故障域或 RPO/RTO 验收。 diff --git a/docs/api/schedule-load.md b/docs/api/schedule-load.md index 8f13294..8a68672 100644 --- a/docs/api/schedule-load.md +++ b/docs/api/schedule-load.md @@ -20,6 +20,8 @@ go run ./cmd/orbit-schedule-load \ 可以把 `-schedules` 调到 32、`-requests` 设为 4,观察同一秒集中触发及现有队列速率限制下的排队。队列默认并发和每秒授权量仍由部署配置决定,工具只记录预检快照,不提高配额。另可使用 `-schedules 2 -requests 12 -start-delay 1s -run-timeout 5s` 验证截止不足的失败报告;它必须非零退出,未观察到的触发点不能算成功。 +要观察持久化积压,可在一次性数据库使用 `-schedules 32 -requests 8 -workers 1 -capacity 1 -start-delay 5s -run-timeout 180s`。该配置会让256个触发点集中进入队列,报告预期非零并保留未核验分母;独立连接应每2秒读取 `pulse_tasks` 的 `WAITING/LEASED/RUNNING/SUCCEEDED` 计数,示例结果见[长期积压报告](../reports/phase-6-backlog.md)。 + ## 参数边界 | 参数 | 默认值 | 限制/语义 | diff --git a/docs/reports/data/phase-6-backlog/curve.json b/docs/reports/data/phase-6-backlog/curve.json new file mode 100644 index 0000000..e41abf0 --- /dev/null +++ b/docs/reports/data/phase-6-backlog/curve.json @@ -0,0 +1,799 @@ +{ + "sample_interval_ms": 2000, + "sample_count": 88, + "timestamp_note": "采样脚本使用 macOS date;当前记录按整秒加 .300Z 规范化,曲线只用于计数趋势,不作为数据库时间戳证据。", + "points": [ + { + "at": "2026-09-20T06:20:18.300Z", + "waiting": 0, + "leased": 0, + "running": 0, + "succeeded": 0, + "occurrences": 0, + "unpaused_schedules": 0 + }, + { + "at": "2026-09-20T06:20:20.300Z", + "waiting": 0, + "leased": 0, + "running": 0, + "succeeded": 0, + "occurrences": 0, + "unpaused_schedules": 32 + }, + { + "at": "2026-09-20T06:20:22.300Z", + "waiting": 0, + "leased": 0, + "running": 0, + "succeeded": 0, + "occurrences": 0, + "unpaused_schedules": 32 + }, + { + "at": "2026-09-20T06:20:24.300Z", + "waiting": 0, + "leased": 0, + "running": 0, + "succeeded": 0, + "occurrences": 0, + "unpaused_schedules": 32 + }, + { + "at": "2026-09-20T06:20:26.300Z", + "waiting": 59, + "leased": 0, + "running": 0, + "succeeded": 1, + "occurrences": 60, + "unpaused_schedules": 32 + }, + { + "at": "2026-09-20T06:20:28.300Z", + "waiting": 121, + "leased": 0, + "running": 0, + "succeeded": 3, + "occurrences": 124, + "unpaused_schedules": 32 + }, + { + "at": "2026-09-20T06:20:30.300Z", + "waiting": 194, + "leased": 0, + "running": 0, + "succeeded": 5, + "occurrences": 199, + "unpaused_schedules": 32 + }, + { + "at": "2026-09-20T06:20:32.300Z", + "waiting": 249, + "leased": 0, + "running": 0, + "succeeded": 7, + "occurrences": 256, + "unpaused_schedules": 32 + }, + { + "at": "2026-09-20T06:20:34.300Z", + "waiting": 246, + "leased": 0, + "running": 0, + "succeeded": 10, + "occurrences": 256, + "unpaused_schedules": 32 + }, + { + "at": "2026-09-20T06:20:36.300Z", + "waiting": 244, + "leased": 0, + "running": 0, + "succeeded": 12, + "occurrences": 256, + "unpaused_schedules": 32 + }, + { + "at": "2026-09-20T06:20:38.300Z", + "waiting": 242, + "leased": 0, + "running": 0, + "succeeded": 14, + "occurrences": 256, + "unpaused_schedules": 32 + }, + { + "at": "2026-09-20T06:20:40.300Z", + "waiting": 240, + "leased": 0, + "running": 0, + "succeeded": 16, + "occurrences": 256, + "unpaused_schedules": 32 + }, + { + "at": "2026-09-20T06:20:42.300Z", + "waiting": 238, + "leased": 0, + "running": 0, + "succeeded": 18, + "occurrences": 256, + "unpaused_schedules": 32 + }, + { + "at": "2026-09-20T06:20:45.300Z", + "waiting": 236, + "leased": 0, + "running": 0, + "succeeded": 20, + "occurrences": 256, + "unpaused_schedules": 32 + }, + { + "at": "2026-09-20T06:20:47.300Z", + "waiting": 234, + "leased": 0, + "running": 0, + "succeeded": 22, + "occurrences": 256, + "unpaused_schedules": 32 + }, + { + "at": "2026-09-20T06:20:49.300Z", + "waiting": 232, + "leased": 0, + "running": 0, + "succeeded": 24, + "occurrences": 256, + "unpaused_schedules": 32 + }, + { + "at": "2026-09-20T06:20:51.300Z", + "waiting": 230, + "leased": 0, + "running": 0, + "succeeded": 26, + "occurrences": 256, + "unpaused_schedules": 32 + }, + { + "at": "2026-09-20T06:20:53.300Z", + "waiting": 228, + "leased": 0, + "running": 0, + "succeeded": 28, + "occurrences": 256, + "unpaused_schedules": 32 + }, + { + "at": "2026-09-20T06:20:55.300Z", + "waiting": 226, + "leased": 0, + "running": 0, + "succeeded": 30, + "occurrences": 256, + "unpaused_schedules": 32 + }, + { + "at": "2026-09-20T06:20:57.300Z", + "waiting": 224, + "leased": 0, + "running": 0, + "succeeded": 32, + "occurrences": 256, + "unpaused_schedules": 32 + }, + { + "at": "2026-09-20T06:20:59.300Z", + "waiting": 222, + "leased": 0, + "running": 0, + "succeeded": 34, + "occurrences": 256, + "unpaused_schedules": 32 + }, + { + "at": "2026-09-20T06:21:01.300Z", + "waiting": 220, + "leased": 0, + "running": 0, + "succeeded": 36, + "occurrences": 256, + "unpaused_schedules": 32 + }, + { + "at": "2026-09-20T06:21:03.300Z", + "waiting": 218, + "leased": 0, + "running": 0, + "succeeded": 38, + "occurrences": 256, + "unpaused_schedules": 32 + }, + { + "at": "2026-09-20T06:21:05.300Z", + "waiting": 216, + "leased": 0, + "running": 0, + "succeeded": 40, + "occurrences": 256, + "unpaused_schedules": 32 + }, + { + "at": "2026-09-20T06:21:07.300Z", + "waiting": 213, + "leased": 0, + "running": 0, + "succeeded": 43, + "occurrences": 256, + "unpaused_schedules": 32 + }, + { + "at": "2026-09-20T06:21:09.300Z", + "waiting": 211, + "leased": 0, + "running": 0, + "succeeded": 45, + "occurrences": 256, + "unpaused_schedules": 32 + }, + { + "at": "2026-09-20T06:21:11.300Z", + "waiting": 209, + "leased": 0, + "running": 0, + "succeeded": 47, + "occurrences": 256, + "unpaused_schedules": 32 + }, + { + "at": "2026-09-20T06:21:13.300Z", + "waiting": 207, + "leased": 0, + "running": 0, + "succeeded": 49, + "occurrences": 256, + "unpaused_schedules": 32 + }, + { + "at": "2026-09-20T06:21:15.300Z", + "waiting": 205, + "leased": 0, + "running": 0, + "succeeded": 51, + "occurrences": 256, + "unpaused_schedules": 32 + }, + { + "at": "2026-09-20T06:21:18.300Z", + "waiting": 203, + "leased": 0, + "running": 0, + "succeeded": 53, + "occurrences": 256, + "unpaused_schedules": 32 + }, + { + "at": "2026-09-20T06:21:20.300Z", + "waiting": 201, + "leased": 0, + "running": 0, + "succeeded": 55, + "occurrences": 256, + "unpaused_schedules": 32 + }, + { + "at": "2026-09-20T06:21:22.300Z", + "waiting": 199, + "leased": 0, + "running": 0, + "succeeded": 57, + "occurrences": 256, + "unpaused_schedules": 32 + }, + { + "at": "2026-09-20T06:21:24.300Z", + "waiting": 197, + "leased": 0, + "running": 0, + "succeeded": 59, + "occurrences": 256, + "unpaused_schedules": 32 + }, + { + "at": "2026-09-20T06:21:26.300Z", + "waiting": 195, + "leased": 0, + "running": 0, + "succeeded": 61, + "occurrences": 256, + "unpaused_schedules": 32 + }, + { + "at": "2026-09-20T06:21:28.300Z", + "waiting": 193, + "leased": 0, + "running": 0, + "succeeded": 63, + "occurrences": 256, + "unpaused_schedules": 32 + }, + { + "at": "2026-09-20T06:21:30.300Z", + "waiting": 191, + "leased": 0, + "running": 0, + "succeeded": 65, + "occurrences": 256, + "unpaused_schedules": 32 + }, + { + "at": "2026-09-20T06:21:32.300Z", + "waiting": 189, + "leased": 0, + "running": 0, + "succeeded": 67, + "occurrences": 256, + "unpaused_schedules": 32 + }, + { + "at": "2026-09-20T06:21:34.300Z", + "waiting": 187, + "leased": 0, + "running": 0, + "succeeded": 69, + "occurrences": 256, + "unpaused_schedules": 32 + }, + { + "at": "2026-09-20T06:21:36.300Z", + "waiting": 185, + "leased": 0, + "running": 0, + "succeeded": 71, + "occurrences": 256, + "unpaused_schedules": 32 + }, + { + "at": "2026-09-20T06:21:38.300Z", + "waiting": 183, + "leased": 0, + "running": 0, + "succeeded": 73, + "occurrences": 256, + "unpaused_schedules": 32 + }, + { + "at": "2026-09-20T06:21:40.300Z", + "waiting": 180, + "leased": 0, + "running": 0, + "succeeded": 76, + "occurrences": 256, + "unpaused_schedules": 32 + }, + { + "at": "2026-09-20T06:21:42.300Z", + "waiting": 178, + "leased": 0, + "running": 0, + "succeeded": 78, + "occurrences": 256, + "unpaused_schedules": 32 + }, + { + "at": "2026-09-20T06:21:44.300Z", + "waiting": 176, + "leased": 0, + "running": 0, + "succeeded": 80, + "occurrences": 256, + "unpaused_schedules": 32 + }, + { + "at": "2026-09-20T06:21:46.300Z", + "waiting": 174, + "leased": 0, + "running": 0, + "succeeded": 82, + "occurrences": 256, + "unpaused_schedules": 32 + }, + { + "at": "2026-09-20T06:21:48.300Z", + "waiting": 172, + "leased": 0, + "running": 0, + "succeeded": 84, + "occurrences": 256, + "unpaused_schedules": 32 + }, + { + "at": "2026-09-20T06:21:51.300Z", + "waiting": 170, + "leased": 0, + "running": 0, + "succeeded": 86, + "occurrences": 256, + "unpaused_schedules": 32 + }, + { + "at": "2026-09-20T06:21:53.300Z", + "waiting": 168, + "leased": 0, + "running": 0, + "succeeded": 88, + "occurrences": 256, + "unpaused_schedules": 32 + }, + { + "at": "2026-09-20T06:21:55.300Z", + "waiting": 166, + "leased": 0, + "running": 0, + "succeeded": 90, + "occurrences": 256, + "unpaused_schedules": 32 + }, + { + "at": "2026-09-20T06:21:57.300Z", + "waiting": 164, + "leased": 0, + "running": 0, + "succeeded": 92, + "occurrences": 256, + "unpaused_schedules": 32 + }, + { + "at": "2026-09-20T06:21:59.300Z", + "waiting": 162, + "leased": 0, + "running": 0, + "succeeded": 94, + "occurrences": 256, + "unpaused_schedules": 32 + }, + { + "at": "2026-09-20T06:22:01.300Z", + "waiting": 160, + "leased": 0, + "running": 0, + "succeeded": 96, + "occurrences": 256, + "unpaused_schedules": 32 + }, + { + "at": "2026-09-20T06:22:03.300Z", + "waiting": 158, + "leased": 0, + "running": 0, + "succeeded": 98, + "occurrences": 256, + "unpaused_schedules": 32 + }, + { + "at": "2026-09-20T06:22:05.300Z", + "waiting": 156, + "leased": 0, + "running": 0, + "succeeded": 100, + "occurrences": 256, + "unpaused_schedules": 32 + }, + { + "at": "2026-09-20T06:22:07.300Z", + "waiting": 154, + "leased": 0, + "running": 0, + "succeeded": 102, + "occurrences": 256, + "unpaused_schedules": 32 + }, + { + "at": "2026-09-20T06:22:09.300Z", + "waiting": 152, + "leased": 0, + "running": 0, + "succeeded": 104, + "occurrences": 256, + "unpaused_schedules": 32 + }, + { + "at": "2026-09-20T06:22:11.300Z", + "waiting": 149, + "leased": 0, + "running": 1, + "succeeded": 106, + "occurrences": 256, + "unpaused_schedules": 32 + }, + { + "at": "2026-09-20T06:22:13.300Z", + "waiting": 147, + "leased": 0, + "running": 0, + "succeeded": 109, + "occurrences": 256, + "unpaused_schedules": 32 + }, + { + "at": "2026-09-20T06:22:15.300Z", + "waiting": 145, + "leased": 0, + "running": 0, + "succeeded": 111, + "occurrences": 256, + "unpaused_schedules": 32 + }, + { + "at": "2026-09-20T06:22:18.300Z", + "waiting": 143, + "leased": 0, + "running": 0, + "succeeded": 113, + "occurrences": 256, + "unpaused_schedules": 32 + }, + { + "at": "2026-09-20T06:22:20.300Z", + "waiting": 141, + "leased": 0, + "running": 0, + "succeeded": 115, + "occurrences": 256, + "unpaused_schedules": 32 + }, + { + "at": "2026-09-20T06:22:22.300Z", + "waiting": 139, + "leased": 0, + "running": 0, + "succeeded": 117, + "occurrences": 256, + "unpaused_schedules": 32 + }, + { + "at": "2026-09-20T06:22:24.300Z", + "waiting": 137, + "leased": 0, + "running": 0, + "succeeded": 119, + "occurrences": 256, + "unpaused_schedules": 32 + }, + { + "at": "2026-09-20T06:22:26.300Z", + "waiting": 135, + "leased": 0, + "running": 0, + "succeeded": 121, + "occurrences": 256, + "unpaused_schedules": 32 + }, + { + "at": "2026-09-20T06:22:28.300Z", + "waiting": 133, + "leased": 0, + "running": 0, + "succeeded": 123, + "occurrences": 256, + "unpaused_schedules": 32 + }, + { + "at": "2026-09-20T06:22:30.300Z", + "waiting": 131, + "leased": 0, + "running": 0, + "succeeded": 125, + "occurrences": 256, + "unpaused_schedules": 32 + }, + { + "at": "2026-09-20T06:22:32.300Z", + "waiting": 129, + "leased": 0, + "running": 0, + "succeeded": 127, + "occurrences": 256, + "unpaused_schedules": 32 + }, + { + "at": "2026-09-20T06:22:34.300Z", + "waiting": 127, + "leased": 0, + "running": 0, + "succeeded": 129, + "occurrences": 256, + "unpaused_schedules": 32 + }, + { + "at": "2026-09-20T06:22:36.300Z", + "waiting": 125, + "leased": 0, + "running": 0, + "succeeded": 131, + "occurrences": 256, + "unpaused_schedules": 32 + }, + { + "at": "2026-09-20T06:22:38.300Z", + "waiting": 123, + "leased": 0, + "running": 0, + "succeeded": 133, + "occurrences": 256, + "unpaused_schedules": 32 + }, + { + "at": "2026-09-20T06:22:40.300Z", + "waiting": 120, + "leased": 0, + "running": 0, + "succeeded": 136, + "occurrences": 256, + "unpaused_schedules": 32 + }, + { + "at": "2026-09-20T06:22:42.300Z", + "waiting": 118, + "leased": 0, + "running": 0, + "succeeded": 138, + "occurrences": 256, + "unpaused_schedules": 32 + }, + { + "at": "2026-09-20T06:22:44.300Z", + "waiting": 116, + "leased": 0, + "running": 0, + "succeeded": 140, + "occurrences": 256, + "unpaused_schedules": 32 + }, + { + "at": "2026-09-20T06:22:46.300Z", + "waiting": 114, + "leased": 0, + "running": 0, + "succeeded": 142, + "occurrences": 256, + "unpaused_schedules": 32 + }, + { + "at": "2026-09-20T06:22:49.300Z", + "waiting": 112, + "leased": 0, + "running": 0, + "succeeded": 144, + "occurrences": 256, + "unpaused_schedules": 32 + }, + { + "at": "2026-09-20T06:22:51.300Z", + "waiting": 110, + "leased": 0, + "running": 0, + "succeeded": 146, + "occurrences": 256, + "unpaused_schedules": 32 + }, + { + "at": "2026-09-20T06:22:53.300Z", + "waiting": 108, + "leased": 0, + "running": 0, + "succeeded": 148, + "occurrences": 256, + "unpaused_schedules": 32 + }, + { + "at": "2026-09-20T06:22:55.300Z", + "waiting": 106, + "leased": 0, + "running": 0, + "succeeded": 150, + "occurrences": 256, + "unpaused_schedules": 32 + }, + { + "at": "2026-09-20T06:22:57.300Z", + "waiting": 104, + "leased": 0, + "running": 0, + "succeeded": 152, + "occurrences": 256, + "unpaused_schedules": 32 + }, + { + "at": "2026-09-20T06:22:59.300Z", + "waiting": 102, + "leased": 0, + "running": 0, + "succeeded": 154, + "occurrences": 256, + "unpaused_schedules": 32 + }, + { + "at": "2026-09-20T06:23:01.300Z", + "waiting": 100, + "leased": 0, + "running": 0, + "succeeded": 156, + "occurrences": 256, + "unpaused_schedules": 32 + }, + { + "at": "2026-09-20T06:23:03.300Z", + "waiting": 98, + "leased": 0, + "running": 0, + "succeeded": 158, + "occurrences": 256, + "unpaused_schedules": 32 + }, + { + "at": "2026-09-20T06:23:05.300Z", + "waiting": 96, + "leased": 0, + "running": 0, + "succeeded": 160, + "occurrences": 256, + "unpaused_schedules": 32 + }, + { + "at": "2026-09-20T06:23:07.300Z", + "waiting": 94, + "leased": 0, + "running": 0, + "succeeded": 162, + "occurrences": 256, + "unpaused_schedules": 32 + }, + { + "at": "2026-09-20T06:23:09.300Z", + "waiting": 92, + "leased": 0, + "running": 0, + "succeeded": 164, + "occurrences": 256, + "unpaused_schedules": 32 + }, + { + "at": "2026-09-20T06:23:11.300Z", + "waiting": 89, + "leased": 0, + "running": 0, + "succeeded": 167, + "occurrences": 256, + "unpaused_schedules": 32 + }, + { + "at": "2026-09-20T06:23:13.300Z", + "waiting": 87, + "leased": 0, + "running": 0, + "succeeded": 169, + "occurrences": 256, + "unpaused_schedules": 32 + }, + { + "at": "2026-09-20T06:23:15.300Z", + "waiting": 85, + "leased": 0, + "running": 0, + "succeeded": 171, + "occurrences": 256, + "unpaused_schedules": 32 + }, + { + "at": "2026-09-20T06:23:17.300Z", + "waiting": 83, + "leased": 0, + "running": 0, + "succeeded": 173, + "occurrences": 256, + "unpaused_schedules": 32 + } + ] +} diff --git a/docs/reports/data/phase-6-backlog/database.json b/docs/reports/data/phase-6-backlog/database.json new file mode 100644 index 0000000..6c1569f --- /dev/null +++ b/docs/reports/data/phase-6-backlog/database.json @@ -0,0 +1,7 @@ +{ + "task_count": 256, + "succeeded_count": 173, + "occurrence_count": 256, + "foreign_key_count": 0, + "unpaused_schedules": 0 +} diff --git a/docs/reports/data/phase-6-backlog/environment.json b/docs/reports/data/phase-6-backlog/environment.json new file mode 100644 index 0000000..5ea0a46 --- /dev/null +++ b/docs/reports/data/phase-6-backlog/environment.json @@ -0,0 +1,48 @@ +{ + "date_local": "2026-09-20", + "timezone": "Asia/Shanghai", + "source_commit": "2973459", + "declared_go": "1.27.1", + "test_go": "go1.25.14", + "temporary_modfile": true, + "mysql": "8.4.10", + "architecture": "arm64", + "docker_vm_cpus": 12, + "docker_vm_memory_bytes": 12529274880, + "orbit_processes": 1, + "mysql_nodes": 1, + "worker_processes": 1, + "worker_connections": 1, + "worker_capacity_each": 1, + "queue_max_concurrency": 4, + "queue_rate_per_second": 10, + "requests_per_schedule": 8, + "schedules": 32, + "expected_tasks": 256, + "interval_ms": 1000, + "run_timeout_ms": 180000, + "poll_interval_ms": 100, + "metrics_enabled": false, + "dedicated_cpu_memory_limits": false, + "network": "Go runner shares disposable MySQL container network namespace; loopback HTTP/WS/MySQL; no host port", + "fresh_disposable_database": true, + "cleanup": "Test-created container stopped and removed; no existing database used", + "exit_code": 1, + "purpose": "long backlog and persistent row-count curve; intentionally deadline-limited", + "source_sha256": { + "sdk/go/cmd/orbit-schedule-load/handler.go": "560426c5eaaad08cce386b304d0b4673757c1d82978d39557b6a72c8b00f12f8", + "sdk/go/cmd/orbit-schedule-load/main.go": "2378bc59bde8e219618848206f5e4aa3e5158fdb0f419b1b8c286754e5e74136", + "sdk/go/cmd/orbit-schedule-load/measure.go": "93bf30957af66631acc202fb65bab81dab2ea6c40259ad1d619eb47d23935832", + "sdk/go/cmd/orbit-schedule-load/measure_test.go": "bd5cf497c427678edf29d6b48af9e95c410d656470f2c7340de19dc5705e9772", + "sdk/go/cmd/orbit-schedule-load/observe.go": "50d43aa8b4b4690ceac976f3d65135a79fcf17530f5263ff5af5453074ad9e90", + "sdk/go/cmd/orbit-schedule-load/report.go": "5a949c2904c21116d19f219d18a2e81a1153f578d4b2d7907b43bbd522f09b32" + }, + "binary_sha256": { + "orbit-schedule-load": "00630c16d74f6c5cd586c8591a87e7328ea742fd04f2979d023e16b1bd90d98b" + }, + "artifact_sha256": { + "sample-256-deadline.json": "37d3b22f9ddaca53a7f358155f8ae9299f202d678c87f86db7662da5f59d1bcf", + "database.json": "61d0363bd49f54abbd6f64734633d49df01e85dad5fc120a23e15a346e3efec6", + "curve.json": "c427a1d5df2ddb9adc59513037e9255b51d974f7a448cdb2bdad502bddd2ade5" + } +} diff --git a/docs/reports/data/phase-6-backlog/sample-256-deadline.json b/docs/reports/data/phase-6-backlog/sample-256-deadline.json new file mode 100644 index 0000000..dc0650d --- /dev/null +++ b/docs/reports/data/phase-6-backlog/sample-256-deadline.json @@ -0,0 +1,621 @@ +{ + "run_id": "56f38d28ef20520e2543c47ab367d5f3", + "go_version": "go1.25.14", + "goos": "linux", + "goarch": "arm64", + "started_at": "2026-09-20T06:20:18.621418006Z", + "finished_at": "2026-09-20T06:23:18.675191881Z", + "requests_per_schedule": 8, + "schedules": 32, + "expected_occurrences": 256, + "workers": 1, + "capacity_per_worker": 1, + "interval_ms": 1000, + "start_delay_ms": 5000, + "run_timeout_ms": 180000, + "poll_interval_ms": 100, + "http_timeout_ms": 5000, + "queue": { + "max_unfinished_tasks": 100000, + "unfinished_tasks": "0", + "id": "caa6b4fd1906e3bb6e0f70683fa7edf7", + "namespace_id": "b253af75df587d5caa987b6edc1a33a0", + "name": "schedule", + "paused": false, + "max_concurrency": 4, + "rate_per_second": 10, + "revision": "1" + }, + "schedule_start": "2026-09-20T06:20:23.625686Z", + "schedule_end": "2026-09-20T06:20:31.625686Z", + "plans": [ + { + "calendar_version": "go1.27.1-b2d18a7c8fa8", + "effective_at": "2026-09-20T06:20:18.628761Z", + "index": 0, + "id": "f3a06a96c8b1c4b83e1b7ff86a557557", + "create_key": "schedule-56f38d28ef20520e2543c47ab367d5f3-00-create", + "resume_key": "schedule-56f38d28ef20520e2543c47ab367d5f3-00-resume", + "resume_revision": "1", + "resumed": true, + "exhausted": false, + "pause_key": "schedule-56f38d28ef20520e2543c47ab367d5f3-00-pause-0", + "pause_revision": "6", + "pause_confirmed": true, + "occurrences": 8, + "fired": 8, + "verified_success": 4 + }, + { + "calendar_version": "go1.27.1-b2d18a7c8fa8", + "effective_at": "2026-09-20T06:20:18.638331Z", + "index": 1, + "id": "426a3f0b73170cb267041e0c63b5f810", + "create_key": "schedule-56f38d28ef20520e2543c47ab367d5f3-01-create", + "resume_key": "schedule-56f38d28ef20520e2543c47ab367d5f3-01-resume", + "resume_revision": "1", + "resumed": true, + "exhausted": false, + "pause_key": "schedule-56f38d28ef20520e2543c47ab367d5f3-01-pause-0", + "pause_revision": "6", + "pause_confirmed": true, + "occurrences": 8, + "fired": 8, + "verified_success": 6 + }, + { + "calendar_version": "go1.27.1-b2d18a7c8fa8", + "effective_at": "2026-09-20T06:20:18.643577Z", + "index": 2, + "id": "ae86b68dc3c525886b64f782b2b78839", + "create_key": "schedule-56f38d28ef20520e2543c47ab367d5f3-02-create", + "resume_key": "schedule-56f38d28ef20520e2543c47ab367d5f3-02-resume", + "resume_revision": "1", + "resumed": true, + "exhausted": false, + "pause_key": "schedule-56f38d28ef20520e2543c47ab367d5f3-02-pause-0", + "pause_revision": "6", + "pause_confirmed": true, + "occurrences": 8, + "fired": 8, + "verified_success": 5 + }, + { + "calendar_version": "go1.27.1-b2d18a7c8fa8", + "effective_at": "2026-09-20T06:20:18.648735Z", + "index": 3, + "id": "619574828e9abe000c60c4a6be4178a1", + "create_key": "schedule-56f38d28ef20520e2543c47ab367d5f3-03-create", + "resume_key": "schedule-56f38d28ef20520e2543c47ab367d5f3-03-resume", + "resume_revision": "1", + "resumed": true, + "exhausted": false, + "pause_key": "schedule-56f38d28ef20520e2543c47ab367d5f3-03-pause-0", + "pause_revision": "6", + "pause_confirmed": true, + "occurrences": 8, + "fired": 8, + "verified_success": 6 + }, + { + "calendar_version": "go1.27.1-b2d18a7c8fa8", + "effective_at": "2026-09-20T06:20:18.65248Z", + "index": 4, + "id": "6620cadb1b5cbf79328f9daf646aa228", + "create_key": "schedule-56f38d28ef20520e2543c47ab367d5f3-04-create", + "resume_key": "schedule-56f38d28ef20520e2543c47ab367d5f3-04-resume", + "resume_revision": "1", + "resumed": true, + "exhausted": false, + "pause_key": "schedule-56f38d28ef20520e2543c47ab367d5f3-04-pause-0", + "pause_revision": "6", + "pause_confirmed": true, + "occurrences": 8, + "fired": 8, + "verified_success": 6 + }, + { + "calendar_version": "go1.27.1-b2d18a7c8fa8", + "effective_at": "2026-09-20T06:20:18.655747Z", + "index": 5, + "id": "95ce03e8d5f99129f179812efd5e4c96", + "create_key": "schedule-56f38d28ef20520e2543c47ab367d5f3-05-create", + "resume_key": "schedule-56f38d28ef20520e2543c47ab367d5f3-05-resume", + "resume_revision": "1", + "resumed": true, + "exhausted": false, + "pause_key": "schedule-56f38d28ef20520e2543c47ab367d5f3-05-pause-0", + "pause_revision": "6", + "pause_confirmed": true, + "occurrences": 8, + "fired": 8, + "verified_success": 6 + }, + { + "calendar_version": "go1.27.1-b2d18a7c8fa8", + "effective_at": "2026-09-20T06:20:18.659187Z", + "index": 6, + "id": "8d268232da6917da9e7c9d301bbcc3dc", + "create_key": "schedule-56f38d28ef20520e2543c47ab367d5f3-06-create", + "resume_key": "schedule-56f38d28ef20520e2543c47ab367d5f3-06-resume", + "resume_revision": "1", + "resumed": true, + "exhausted": false, + "pause_key": "schedule-56f38d28ef20520e2543c47ab367d5f3-06-pause-0", + "pause_revision": "6", + "pause_confirmed": true, + "occurrences": 8, + "fired": 8, + "verified_success": 6 + }, + { + "calendar_version": "go1.27.1-b2d18a7c8fa8", + "effective_at": "2026-09-20T06:20:18.662449Z", + "index": 7, + "id": "4371d18734b87d7cf8fe2ef39dbc4974", + "create_key": "schedule-56f38d28ef20520e2543c47ab367d5f3-07-create", + "resume_key": "schedule-56f38d28ef20520e2543c47ab367d5f3-07-resume", + "resume_revision": "1", + "resumed": true, + "exhausted": false, + "pause_key": "schedule-56f38d28ef20520e2543c47ab367d5f3-07-pause-0", + "pause_revision": "6", + "pause_confirmed": true, + "occurrences": 8, + "fired": 8, + "verified_success": 6 + }, + { + "calendar_version": "go1.27.1-b2d18a7c8fa8", + "effective_at": "2026-09-20T06:20:18.665955Z", + "index": 8, + "id": "4e3848e36ebf835b0feff704f0343ad3", + "create_key": "schedule-56f38d28ef20520e2543c47ab367d5f3-08-create", + "resume_key": "schedule-56f38d28ef20520e2543c47ab367d5f3-08-resume", + "resume_revision": "1", + "resumed": true, + "exhausted": false, + "pause_key": "schedule-56f38d28ef20520e2543c47ab367d5f3-08-pause-0", + "pause_revision": "6", + "pause_confirmed": true, + "occurrences": 8, + "fired": 8, + "verified_success": 6 + }, + { + "calendar_version": "go1.27.1-b2d18a7c8fa8", + "effective_at": "2026-09-20T06:20:18.668742Z", + "index": 9, + "id": "53db910f4d9c731c989c236de748d3be", + "create_key": "schedule-56f38d28ef20520e2543c47ab367d5f3-09-create", + "resume_key": "schedule-56f38d28ef20520e2543c47ab367d5f3-09-resume", + "resume_revision": "1", + "resumed": true, + "exhausted": false, + "pause_key": "schedule-56f38d28ef20520e2543c47ab367d5f3-09-pause-0", + "pause_revision": "6", + "pause_confirmed": true, + "occurrences": 8, + "fired": 8, + "verified_success": 6 + }, + { + "calendar_version": "go1.27.1-b2d18a7c8fa8", + "effective_at": "2026-09-20T06:20:18.672757Z", + "index": 10, + "id": "7048f2fa23f00ae5272bf32f1c7bb799", + "create_key": "schedule-56f38d28ef20520e2543c47ab367d5f3-10-create", + "resume_key": "schedule-56f38d28ef20520e2543c47ab367d5f3-10-resume", + "resume_revision": "1", + "resumed": true, + "exhausted": false, + "pause_key": "schedule-56f38d28ef20520e2543c47ab367d5f3-10-pause-0", + "pause_revision": "6", + "pause_confirmed": true, + "occurrences": 8, + "fired": 8, + "verified_success": 6 + }, + { + "calendar_version": "go1.27.1-b2d18a7c8fa8", + "effective_at": "2026-09-20T06:20:18.676937Z", + "index": 11, + "id": "d661425892f3ec6975fdd39b385118ac", + "create_key": "schedule-56f38d28ef20520e2543c47ab367d5f3-11-create", + "resume_key": "schedule-56f38d28ef20520e2543c47ab367d5f3-11-resume", + "resume_revision": "1", + "resumed": true, + "exhausted": false, + "pause_key": "schedule-56f38d28ef20520e2543c47ab367d5f3-11-pause-0", + "pause_revision": "6", + "pause_confirmed": true, + "occurrences": 8, + "fired": 8, + "verified_success": 4 + }, + { + "calendar_version": "go1.27.1-b2d18a7c8fa8", + "effective_at": "2026-09-20T06:20:18.67999Z", + "index": 12, + "id": "163617370b9a430154d45f7c6e714883", + "create_key": "schedule-56f38d28ef20520e2543c47ab367d5f3-12-create", + "resume_key": "schedule-56f38d28ef20520e2543c47ab367d5f3-12-resume", + "resume_revision": "1", + "resumed": true, + "exhausted": false, + "pause_key": "schedule-56f38d28ef20520e2543c47ab367d5f3-12-pause-0", + "pause_revision": "7", + "pause_confirmed": true, + "occurrences": 8, + "fired": 8, + "verified_success": 5 + }, + { + "calendar_version": "go1.27.1-b2d18a7c8fa8", + "effective_at": "2026-09-20T06:20:18.682823Z", + "index": 13, + "id": "87243a68bd6c16aaeb027d52043e962e", + "create_key": "schedule-56f38d28ef20520e2543c47ab367d5f3-13-create", + "resume_key": "schedule-56f38d28ef20520e2543c47ab367d5f3-13-resume", + "resume_revision": "1", + "resumed": true, + "exhausted": false, + "pause_key": "schedule-56f38d28ef20520e2543c47ab367d5f3-13-pause-0", + "pause_revision": "6", + "pause_confirmed": true, + "occurrences": 8, + "fired": 8, + "verified_success": 6 + }, + { + "calendar_version": "go1.27.1-b2d18a7c8fa8", + "effective_at": "2026-09-20T06:20:18.685211Z", + "index": 14, + "id": "f70a8c1623f4c2de24f65be9109ef3a0", + "create_key": "schedule-56f38d28ef20520e2543c47ab367d5f3-14-create", + "resume_key": "schedule-56f38d28ef20520e2543c47ab367d5f3-14-resume", + "resume_revision": "1", + "resumed": true, + "exhausted": false, + "pause_key": "schedule-56f38d28ef20520e2543c47ab367d5f3-14-pause-0", + "pause_revision": "6", + "pause_confirmed": true, + "occurrences": 8, + "fired": 8, + "verified_success": 4 + }, + { + "calendar_version": "go1.27.1-b2d18a7c8fa8", + "effective_at": "2026-09-20T06:20:18.688788Z", + "index": 15, + "id": "34093c08585f34d2384848646783ae0f", + "create_key": "schedule-56f38d28ef20520e2543c47ab367d5f3-15-create", + "resume_key": "schedule-56f38d28ef20520e2543c47ab367d5f3-15-resume", + "resume_revision": "1", + "resumed": true, + "exhausted": false, + "pause_key": "schedule-56f38d28ef20520e2543c47ab367d5f3-15-pause-0", + "pause_revision": "6", + "pause_confirmed": true, + "occurrences": 8, + "fired": 8, + "verified_success": 6 + }, + { + "calendar_version": "go1.27.1-b2d18a7c8fa8", + "effective_at": "2026-09-20T06:20:18.693017Z", + "index": 16, + "id": "ff25b39e9d697e3ace22dfdc077e9d53", + "create_key": "schedule-56f38d28ef20520e2543c47ab367d5f3-16-create", + "resume_key": "schedule-56f38d28ef20520e2543c47ab367d5f3-16-resume", + "resume_revision": "1", + "resumed": true, + "exhausted": false, + "pause_key": "schedule-56f38d28ef20520e2543c47ab367d5f3-16-pause-0", + "pause_revision": "6", + "pause_confirmed": true, + "occurrences": 8, + "fired": 8, + "verified_success": 4 + }, + { + "calendar_version": "go1.27.1-b2d18a7c8fa8", + "effective_at": "2026-09-20T06:20:18.695564Z", + "index": 17, + "id": "4de82baaf5d51dd1d65b99f5230e156e", + "create_key": "schedule-56f38d28ef20520e2543c47ab367d5f3-17-create", + "resume_key": "schedule-56f38d28ef20520e2543c47ab367d5f3-17-resume", + "resume_revision": "1", + "resumed": true, + "exhausted": false, + "pause_key": "schedule-56f38d28ef20520e2543c47ab367d5f3-17-pause-0", + "pause_revision": "6", + "pause_confirmed": true, + "occurrences": 8, + "fired": 8, + "verified_success": 6 + }, + { + "calendar_version": "go1.27.1-b2d18a7c8fa8", + "effective_at": "2026-09-20T06:20:18.697773Z", + "index": 18, + "id": "3f2bceecf0cb5931eeb4f400cb0f139c", + "create_key": "schedule-56f38d28ef20520e2543c47ab367d5f3-18-create", + "resume_key": "schedule-56f38d28ef20520e2543c47ab367d5f3-18-resume", + "resume_revision": "1", + "resumed": true, + "exhausted": false, + "pause_key": "schedule-56f38d28ef20520e2543c47ab367d5f3-18-pause-0", + "pause_revision": "6", + "pause_confirmed": true, + "occurrences": 8, + "fired": 8, + "verified_success": 6 + }, + { + "calendar_version": "go1.27.1-b2d18a7c8fa8", + "effective_at": "2026-09-20T06:20:18.704364Z", + "index": 19, + "id": "8a741a6c8c310c92ab8330e646e3d2eb", + "create_key": "schedule-56f38d28ef20520e2543c47ab367d5f3-19-create", + "resume_key": "schedule-56f38d28ef20520e2543c47ab367d5f3-19-resume", + "resume_revision": "1", + "resumed": true, + "exhausted": false, + "pause_key": "schedule-56f38d28ef20520e2543c47ab367d5f3-19-pause-0", + "pause_revision": "6", + "pause_confirmed": true, + "occurrences": 8, + "fired": 8, + "verified_success": 6 + }, + { + "calendar_version": "go1.27.1-b2d18a7c8fa8", + "effective_at": "2026-09-20T06:20:18.707256Z", + "index": 20, + "id": "17a1386e39b5a60f384334a6fc83e2f5", + "create_key": "schedule-56f38d28ef20520e2543c47ab367d5f3-20-create", + "resume_key": "schedule-56f38d28ef20520e2543c47ab367d5f3-20-resume", + "resume_revision": "1", + "resumed": true, + "exhausted": false, + "pause_key": "schedule-56f38d28ef20520e2543c47ab367d5f3-20-pause-0", + "pause_revision": "6", + "pause_confirmed": true, + "occurrences": 8, + "fired": 8, + "verified_success": 5 + }, + { + "calendar_version": "go1.27.1-b2d18a7c8fa8", + "effective_at": "2026-09-20T06:20:18.710192Z", + "index": 21, + "id": "0072ef6c130843eee6a4d721136e6215", + "create_key": "schedule-56f38d28ef20520e2543c47ab367d5f3-21-create", + "resume_key": "schedule-56f38d28ef20520e2543c47ab367d5f3-21-resume", + "resume_revision": "1", + "resumed": true, + "exhausted": false, + "pause_key": "schedule-56f38d28ef20520e2543c47ab367d5f3-21-pause-0", + "pause_revision": "7", + "pause_confirmed": true, + "occurrences": 8, + "fired": 8, + "verified_success": 5 + }, + { + "calendar_version": "go1.27.1-b2d18a7c8fa8", + "effective_at": "2026-09-20T06:20:18.712915Z", + "index": 22, + "id": "53c43229bfcd5c504b53ca9479be3e27", + "create_key": "schedule-56f38d28ef20520e2543c47ab367d5f3-22-create", + "resume_key": "schedule-56f38d28ef20520e2543c47ab367d5f3-22-resume", + "resume_revision": "1", + "resumed": true, + "exhausted": false, + "pause_key": "schedule-56f38d28ef20520e2543c47ab367d5f3-22-pause-0", + "pause_revision": "6", + "pause_confirmed": true, + "occurrences": 8, + "fired": 8, + "verified_success": 6 + }, + { + "calendar_version": "go1.27.1-b2d18a7c8fa8", + "effective_at": "2026-09-20T06:20:18.715124Z", + "index": 23, + "id": "b939cfc754378e087e172b33ecd793e7", + "create_key": "schedule-56f38d28ef20520e2543c47ab367d5f3-23-create", + "resume_key": "schedule-56f38d28ef20520e2543c47ab367d5f3-23-resume", + "resume_revision": "1", + "resumed": true, + "exhausted": false, + "pause_key": "schedule-56f38d28ef20520e2543c47ab367d5f3-23-pause-0", + "pause_revision": "6", + "pause_confirmed": true, + "occurrences": 8, + "fired": 8, + "verified_success": 4 + }, + { + "calendar_version": "go1.27.1-b2d18a7c8fa8", + "effective_at": "2026-09-20T06:20:18.71859Z", + "index": 24, + "id": "2601b51048bf485ce5b3ff98f339e160", + "create_key": "schedule-56f38d28ef20520e2543c47ab367d5f3-24-create", + "resume_key": "schedule-56f38d28ef20520e2543c47ab367d5f3-24-resume", + "resume_revision": "1", + "resumed": true, + "exhausted": false, + "pause_key": "schedule-56f38d28ef20520e2543c47ab367d5f3-24-pause-0", + "pause_revision": "6", + "pause_confirmed": true, + "occurrences": 8, + "fired": 8, + "verified_success": 6 + }, + { + "calendar_version": "go1.27.1-b2d18a7c8fa8", + "effective_at": "2026-09-20T06:20:18.72195Z", + "index": 25, + "id": "e18d48db194a1dc3d057302d833d2c59", + "create_key": "schedule-56f38d28ef20520e2543c47ab367d5f3-25-create", + "resume_key": "schedule-56f38d28ef20520e2543c47ab367d5f3-25-resume", + "resume_revision": "1", + "resumed": true, + "exhausted": false, + "pause_key": "schedule-56f38d28ef20520e2543c47ab367d5f3-25-pause-0", + "pause_revision": "6", + "pause_confirmed": true, + "occurrences": 8, + "fired": 8, + "verified_success": 4 + }, + { + "calendar_version": "go1.27.1-b2d18a7c8fa8", + "effective_at": "2026-09-20T06:20:18.724501Z", + "index": 26, + "id": "6d1a4cf3a509ae831e3a1c4b979d230a", + "create_key": "schedule-56f38d28ef20520e2543c47ab367d5f3-26-create", + "resume_key": "schedule-56f38d28ef20520e2543c47ab367d5f3-26-resume", + "resume_revision": "1", + "resumed": true, + "exhausted": false, + "pause_key": "schedule-56f38d28ef20520e2543c47ab367d5f3-26-pause-0", + "pause_revision": "6", + "pause_confirmed": true, + "occurrences": 8, + "fired": 8, + "verified_success": 6 + }, + { + "calendar_version": "go1.27.1-b2d18a7c8fa8", + "effective_at": "2026-09-20T06:20:18.727463Z", + "index": 27, + "id": "8775819e5796e0bfe33373bf72733322", + "create_key": "schedule-56f38d28ef20520e2543c47ab367d5f3-27-create", + "resume_key": "schedule-56f38d28ef20520e2543c47ab367d5f3-27-resume", + "resume_revision": "1", + "resumed": true, + "exhausted": false, + "pause_key": "schedule-56f38d28ef20520e2543c47ab367d5f3-27-pause-0", + "pause_revision": "6", + "pause_confirmed": true, + "occurrences": 8, + "fired": 8, + "verified_success": 6 + }, + { + "calendar_version": "go1.27.1-b2d18a7c8fa8", + "effective_at": "2026-09-20T06:20:18.731147Z", + "index": 28, + "id": "047a0b412a5c6f4d765955c2ca3c4f83", + "create_key": "schedule-56f38d28ef20520e2543c47ab367d5f3-28-create", + "resume_key": "schedule-56f38d28ef20520e2543c47ab367d5f3-28-resume", + "resume_revision": "1", + "resumed": true, + "exhausted": false, + "pause_key": "schedule-56f38d28ef20520e2543c47ab367d5f3-28-pause-0", + "pause_revision": "7", + "pause_confirmed": true, + "occurrences": 8, + "fired": 8, + "verified_success": 5 + }, + { + "calendar_version": "go1.27.1-b2d18a7c8fa8", + "effective_at": "2026-09-20T06:20:18.733403Z", + "index": 29, + "id": "35c34505cb1af9aaac576e672e1c522d", + "create_key": "schedule-56f38d28ef20520e2543c47ab367d5f3-29-create", + "resume_key": "schedule-56f38d28ef20520e2543c47ab367d5f3-29-resume", + "resume_revision": "1", + "resumed": true, + "exhausted": false, + "pause_key": "schedule-56f38d28ef20520e2543c47ab367d5f3-29-pause-0", + "pause_revision": "6", + "pause_confirmed": true, + "occurrences": 8, + "fired": 8, + "verified_success": 6 + }, + { + "calendar_version": "go1.27.1-b2d18a7c8fa8", + "effective_at": "2026-09-20T06:20:18.736063Z", + "index": 30, + "id": "74a12d0f100a2f688f0c39129f98c7a5", + "create_key": "schedule-56f38d28ef20520e2543c47ab367d5f3-30-create", + "resume_key": "schedule-56f38d28ef20520e2543c47ab367d5f3-30-resume", + "resume_revision": "1", + "resumed": true, + "exhausted": false, + "pause_key": "schedule-56f38d28ef20520e2543c47ab367d5f3-30-pause-0", + "pause_revision": "6", + "pause_confirmed": true, + "occurrences": 8, + "fired": 8, + "verified_success": 6 + }, + { + "calendar_version": "go1.27.1-b2d18a7c8fa8", + "effective_at": "2026-09-20T06:20:18.738395Z", + "index": 31, + "id": "e9bd7ea283990ed3465a45e191eb2838", + "create_key": "schedule-56f38d28ef20520e2543c47ab367d5f3-31-create", + "resume_key": "schedule-56f38d28ef20520e2543c47ab367d5f3-31-resume", + "resume_revision": "1", + "resumed": true, + "exhausted": false, + "pause_key": "schedule-56f38d28ef20520e2543c47ab367d5f3-31-pause-0", + "pause_revision": "6", + "pause_confirmed": true, + "occurrences": 8, + "fired": 8, + "verified_success": 4 + } + ], + "occurrences": 256, + "fired": 256, + "verified_success": 173, + "unobserved": 0, + "unverified": 83, + "handler_calls": 173, + "duplicate_invocations": 0, + "unconfirmed_invocations": 0, + "worker_started": 173, + "worker_reconnects": 0, + "worker_renewals_confirmed": 0, + "trigger_lag": { + "count": 173, + "p50_ms": 996.392, + "p95_ms": 1112.777, + "p99_ms": 1996.392, + "max_ms": 1999.918 + }, + "queue_wait": { + "count": 173, + "p50_ms": 85092.808, + "p95_ms": 161050.328, + "p99_ms": 168038.059, + "max_ms": 169030.573 + }, + "authorized_execution": { + "count": 173, + "p50_ms": 6.571, + "p95_ms": 9.399, + "p99_ms": 12.376, + "max_ms": 17.122 + }, + "completion": { + "count": 173, + "p50_ms": 86133.906, + "p95_ms": 161134.271, + "p99_ms": 169134.574, + "max_ms": 169137.995 + }, + "errors": { + "RUN_TIMEOUT": 1, + "VERIFY_TIMEOUT": 1 + }, + "complete": false +} diff --git a/docs/reports/phase-6-backlog.md b/docs/reports/phase-6-backlog.md new file mode 100644 index 0000000..6badbce --- /dev/null +++ b/docs/reports/phase-6-backlog.md @@ -0,0 +1,57 @@ +# P6 长期积压与资源曲线样本 + +日期:2026-09-20。本批验证计划触发在低执行容量下形成**持久化**待执行积压,并连续读取 MySQL 中的任务状态计数。它是单节点、一次性数据库的正确性和趋势样本,不是生产容量、SLA、高可用或百万企业承载结论。 + +## 场景和结果 + +在一个隔离命名空间创建 32 个共享起止时间的固定间隔计划,每个计划 8 个触发点,共 256 个任务。使用 1 个 WSS Worker、容量 1;队列只读快照为并发4、每秒授权10。触发全部落库后,Worker 逐步完成任务,工具整体截止 180 秒,故意让积压样本保留未完成分母。 + +| 指标 | 结果 | +| --- | ---: | +| 预期/观察触发点 | 256 / 256 | +| 预期/生成任务 | 256 / 256 | +| 完成核验成功 | 173 | +| 未核验任务 | 83 | +| 有效本地处理器调用 | 173 | +| 重复调用 | 0 | +| 最大观察等待积压 | 249 | +| 截止时等待积压 | 83 | +| 退出码 | 1(预期的 `RUN_TIMEOUT`) | +| 计划收尾 | 32 个 `pause_confirmed=true` | +| 数据库最终任务/成功任务 | 256 / 173 | +| 触发记录重复任务 | 0 | +| 实际外键 | 0 | + +原始工具报告:[sample-256-deadline.json](data/phase-6-backlog/sample-256-deadline.json)。工具把 `expected`、`occurrences`、`fired`、`verified_success`、`unverified` 分开;83 个未核验任务没有被解释成失败、撤销或成功。暂停只阻止新的计划触发,不取消已生成任务,因而最终数据库仍保留待处理任务供后续沿原身份核对。 + +## 持久化曲线 + +工具运行期间每 2 秒通过独立数据库连接读取 `pulse_tasks` 状态、触发记录和未暂停计划数量。触发集中完成后,`occurrences` 保持 256;`waiting` 从最高 249 随 Worker 逐步完成下降到截止时 83,`succeeded` 从0增至173。曲线原始点见[curve.json](data/phase-6-backlog/curve.json),最终数据库快照见[database.json](data/phase-6-backlog/database.json)。采样时间仅用于排列趋势,未混入任务阶段延迟统计。 + +| 采样阶段 | waiting | succeeded | occurrences | unpaused_schedules | +| --- | ---: | ---: | ---: | ---: | +| 触发前 | 0 | 0 | 0 | 0 | +| 触发完成后早期 | 242 | 14 | 256 | 32 | +| 中段 | 180 | 76 | 256 | 32 | +| 后段 | 98 | 158 | 256 | 32 | +| 截止前最后点 | 83 | 173 | 256 | 32 | + +本批没有开启指标监听,也没有独占 CPU、内存、磁盘或数据库资源;因此曲线只证明持久状态和收尾行为,不证明资源消耗曲线。后续目标拓扑容量测试需要同时采集数据库连接池、锁等待、CPU、内存、磁盘、复制延迟和队列阶段延迟,并进行多轮稳态与恢复对照。 + +## 环境与复现 + +实际工具链 Go 1.25.14 Linux arm64,通过临时 modfile 构建,仓库声明的 Go 1.27.1 未改;一次性 MySQL 8.4.10,Docker VM 12 CPU/12,529,274,880 字节内存,其他容器可能共享资源。服务端、MySQL 和工具共享容器网络命名空间,不发布宿主机端口。源码/二进制/报告哈希和完整参数见[environment.json](data/phase-6-backlog/environment.json)。该二进制来自已提交的 `2973459`,构建后没有修改源码。 + +在 SDK 目录使用隔离凭据可复现核心命令: + +```sh +ORBIT_URL=http://127.0.0.1:$PORT \ +ORBIT_CREDENTIALS_FILE=/tmp/schedule-backlog.credentials.json \ +./orbit-schedule-load \ + -schedules 32 -requests 8 -workers 1 -capacity 1 \ + -start-delay 5s -run-timeout 180s -poll-interval 100ms +``` + +准备阶段必须使用一次性 MySQL、`orbit-migrate up`、隔离队列和 `worker-access`/`schedule-access` 权限;不要把这条命令指向生产队列。命令预期在本样本的速率和容量下以非零退出,并在报告中保留未核验分母。收尾后使用 `orbit-admin verify`,再从独立数据库连接检查任务状态和外键数量。完整启动/清理方式按[定时工具手册](../api/schedule-load.md)和仓库一次性 MySQL 脚本约定执行。 + +本批没有验证长期运行数小时的存储增长、历史归档、跨节点公平、Worker 重连风暴、MySQL 故障切换、备份恢复或 RPO/RTO;这些仍属于 P6/P7 未完成门槛。 diff --git a/docs/reports/phase-7-regression-status.md b/docs/reports/phase-7-regression-status.md index b90854e..5053f48 100644 --- a/docs/reports/phase-7-regression-status.md +++ b/docs/reports/phase-7-regression-status.md @@ -26,7 +26,7 @@ 此前使用容器网络别名运行存储集成时,两组 COMMIT 故障测试曾因自身 `127.0.0.1` 明文连接前置条件被拒绝;本轮已改用共享网络命名空间单独复跑并通过,因此不再把它们列为未验证场景。共享网络命名空间只解决测试进程的 loopback 观察条件,不改变生产部署约束。 -当前仍未完成仓库声明 Go 1.27.1 下的无过滤标准全量回归,以及 SDK/服务端跨标签矩阵。上述 Docker Go 1.25 共享网络结果补齐了当前容器环境的进程故障证据,但不替代目标发布环境的工具链、拓扑和版本兼容门禁。 +当前仍未完成仓库声明 Go 1.27.1 下的无过滤标准全量回归,以及 SDK/服务端跨标签矩阵;新增长期积压样本见[报告](phase-6-backlog.md),仍未升级为生产容量结论。上述 Docker Go 1.25 共享网络结果补齐了当前容器环境的进程故障证据,但不替代目标发布环境的工具链、拓扑和版本兼容门禁。 历史 macOS arm64 + Go 1.27.1 + loopback MySQL 的完整切点记录见[故障边界报告](phase-6-fault-boundaries.md)。当前 Docker Go 1.25 结果仍不升级为仓库声明 Go 1.27.1 的正式全量结论。