## 独立交付与输入输出 已授权的持久 Run/Task 状态读取能力 → 当前状态存量、采集时间及采集失败状态。 ## 验收条件 - [ ] 区分进程 transition counter、当前持久状态 gauge 和精确审计历史;重启不把进程计数当成持久存量。 - [ ] 通过中立有界聚合读取契约消费存储,具体 SQL/Redis 实现在可选适配侧;Core 不直接全表扫描或引入 JDBC/Redis。 - [ ] 成功采集才更新 snapshot 时间,失败保留旧快照并标明过期;不能用失败时的零值伪装积压清空。 - [ ] 明确多副本语义:同一共享存储全局快照不能直接求和;分片模式另声明作用域和聚合方法。标签消费 #318,不用 run/tenant 任意值扩张。 - [ ] reference 测试 CREATED→RUNNING→终态后的存量、采集失败后的新鲜度、进程重启及两实例共享快照;提供正确多副本查询示例。 ## 非目标与任务归属 父任务 #306。不实现全新审计库、看板平台或持久状态机;#317 继续负责进程执行指标,#236 负责运行事件,存储生产集成可后续分仓实施。 ## 参考依据及限制 参考本地 stream-agent 当前工作区:TaskMetrics.java 的 Snapshot/collect,docs/observability.md 对共享数据库副本取 max 及汇总时间的说明。 该工作区 HEAD 为 b2cc81ac95a5d7ce9aadf7f4867fbd87764b54b1,相关内容含未提交/未跟踪修改,不能使用该 SHA 宣称上述文件已发布。本次仅静态查看源码和测试,没有执行验证;本单是 ARGI 能力演进,不是已复现 BUG,也不直接复制平台实现。 ARGI 分析基线 04c5686fe66b8daaa5d60190effa0cc1f40fdfe9;优先复用已有契约,独立 Agent/Workflow 不依赖 Graph/Loop,不强制一任务一模块。破坏性变化需说明收益、较小替代方案、影响、目标版本和迁移;离线、真实服务及跨 JVM 保证分别验收。
Activity
konlue commentedon Nov 8, 2026
您好,我想认领 #331。
方案(契约 + Memory 参考 + 契约测试,全部落在
argi-runtime-core的run/metrics/新包)PersistedRunStateReader:中立有界聚合读取契约——一次PersistedRunStateQuery(RunNamespace作用域 + 关注的RunState子集)换回按状态计数的聚合结果,实现侧用自己的存储计算(SQL GROUP BY / Redis 计数器),Core 不做全表扫描、不引 JDBC/Redis/micrometer;SQL/Redis 实现按 persistence-ownership 边界放适配仓。PersistedRunStateSnapshot:按状态存量 +collectedAt(只有成功采集才推进)+ 显式 stale 标记与staleSince(首次失败时刻)——采集失败保留旧值并标过期,不用零值伪装积压清空。FreshnessGatedRunStateAggregator:新鲜度闸门——成功推进快照;失败保留最后已知值;新建聚合器无快照(current()为 empty),进程重启不能拿进程计数或零值冒充持久存量(进程 transition counter 属 [Task][P1] 统一运行、步骤与调用 attempt 的指标统计语义 #317,运行事件属 [Feature] 完善中立执行事件及可恢复的前端运行视图 #236,审计历史不在此重建,包 javadoc 声明三类测量的区分)。RunState值,run/tenant 只作作用域参数(遵循 [Task][P1] 约束动态 Agent 与插件指标的标签基数和注册生命周期 #318 的低基数原则)。issue 的 CREATED 在中立词汇中为PENDING。测试
沿用
RunStoreContractTest抽象契约模式:PersistedRunStateReaderContractTest(抽象,4 用例:生命周期 PENDING→RUNNING→SUCCEEDED 存量、状态子集过滤、空 store 全零、namespace 即作用域)+MemoryRunStoreReaderTest(Memory 参考实现直跑);FreshnessGatedRunStateAggregatorTest8 用例(注 Clock 驱动时间):首采前无快照、成功采集推进时间、失败保留旧值标 stale(值不变非零、staleSince 取首次失败)、恢复后恢复 fresh、首次失败无历史时传播异常、重启后从 store 重建、共享存储同快照不求和、分片求和示例。feat(runtime): add freshness-gated persisted run state gauges (issue #…
Merge pull request #361 from konlue/feat/issue331-persisted-state-fre…