Skip to content

[Channel RFC] Phase 0 infra prerequisites (DeleteAsync / EventHubs harness / secret manager) #255

@eanzhao

Description

@eanzhao

Parent RFC: #254

Scope

Phase 0 前置基础设施,没有这些 follow-up sub issues 无法启动。本 issue 只负责提供框架脚手架和 infra 验证——具体 domain 的迁移动作(例如 Lark 把 encrypt_key 从 proto 搬到 secret manager)属于对应 domain 的 sub issue。

Tasks

  1. IProjectionWriteDispatcher.DeleteAsync 加法(见 RFC §6 / §7.1 / §17.1)

    • 位置:framework-levelsrc/Aevatar.CQRS.Projection.Runtime.Abstractions/),不在 Channel.Abstractions——这是跨 domain 受益的 framework promotion
    • 当前 IProjectionWriteDispatcher<T> / IProjectionWriteSink<T> 只有 UpsertAsync
    • PerEntryDocumentProjector 的 Tombstone 路径必须有物理 DeleteAsync(string key, CancellationToken ct) 才能落地,否则 projection store 无限膨胀
    • 独立 PR 先合入,是 [Channel RFC] Base class extraction (PerEntryDocumentProjector + ISchedulable) #259 PerEntryDocumentProjector 和所有 channel sub issues 的前置
  2. Orleans Streams persistent provider validation harness(见 RFC §9.5.6.1)

    • 部署 EventHubs namespace
    • 写最小 validation harness:consumer 订阅 stream,OnNextAsync 分别正常返回 / 抛异常;观察"抛异常的 event 是否在下一次 Acquire / 重连后重新送达"
    • 判定准则:throw → redeliver(期望)→ 可用;throw → commit checkpoint(行为不符)→ EventHubs 不可作为 durable inbox provider,必须 fallback 到 Kafka 或实现 manual-checkpoint wrapper
    • 这是 Phase 1 的前置 blocker:validation harness 测试成功后才开始实施 Aevatar.GAgents.Channel.Runtime
  3. Secret manager 集成脚手架(见 RFC §9.6 / §17.3)

    • ICredentialProvider 接口定义 + AuthContext record——位置:framework-level(建议 src/Aevatar.Integration.Auth.Abstractions/ 或现有 Aevatar.Configuration / SecretManager 相邻层),不在 Channel.Abstractions。跨 domain 受益范围见 RFC §17.3(LLM / connector / NyxID / channel 多 domain)
    • BotRegistrationEntry.credential_ref 字段在 proto 启用(具体字段用法由 adapter migration 消费)
    • 本 issue 不做任何 domain 的具体 credential 迁移——Lark encrypt_key / Slack signing_secret / 等从明文到 credential_ref 的迁移归各 adapter sub issue(Lark 归 [Channel RFC] Lark adapter migration (LarkPlatformAdapter → LarkChannelAdapter + group chat + streaming) #261,Slack / Discord 归未来 sub issue)

Acceptance

  • IProjectionWriteDispatcher<T>.DeleteAsync + IProjectionWriteSink<T>.DeleteAsync merged(framework-level,非 Channel.Abstractions
  • EventHubs validation harness result documented(当前结论:仓库内已验证并支持的 durable backend 为 KafkaProvider;EventHubs 仍需在新增 backend 后用同一 harness 单独验证,否则保持 fallback 方案)
  • ICredentialProvider interface + AuthContext record + credential_ref proto field scaffold merged 到 framework 层(per RFC §17.3)

注:Lark encrypt_key 从 proto 迁到 secret manager 的实际动作 = #261 (Lark adapter migration) scope,不在本 issue acceptance 里。本 issue 只保证迁移动作的"工具"可用(即 3 个 acceptance 条目齐备)。

References

  • RFC §6 复用现有抽象(第 6 节)
  • RFC §9.5.6.1 Phase 0 provider validation
  • RFC §9.6 Credentials / security boundary
  • RFC §17.1 / §17.3 Framework promotion proposals(本 issue task 1 + 3 的 framework-level 定位依据)

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions